パラメータ化された行フィルタを最適化する方法 (レプリケーション Transact-SQL プログラミング)
パラメータ化されたフィルタを使用する場合、パブリケーションを作成する際に @use_partition_groups オプションまたは @keep_partition_changes オプションを指定して、マージ レプリケーションでのフィルタの処理方法を制御できます。この 2 つのオプションを使用し、パブリケーション データベースに追加のメタデータを格納することで、アーティクルをフィルタ選択し、パブリケーションの同期パフォーマンスを向上できます。アーティクルを作成する際に @partition_options を設定することで、サブスクライバ間でデータを共有する方法を制御できます。
これらの要件の詳細については、「パラメータ化された行フィルタ」を参照してください。@keep_partition_changes および @use_partition_groups のフィルタ オプションの定義については、「sp_addmergepublication」を参照してください。
新しいパブリケーションを作成するときにマージ フィルタの最適化を指定するには
パブリッシャ側のパブリケーション データベースに対して、sp_addmergepublication を実行します。@publication を指定し、次のいずれかのパラメータに true を指定します。
- @use_partition_groups - アーティクルが事前計算済みパーティションの要件を満たしている場合、パフォーマンスが最も最適化されます。詳細については、「事前計算済みパーティションによるパラメータ化されたフィルタのパフォーマンス最適化」を参照してください。
- @keep_partition_changes - 事前計算済みパーティションを使用できない場合、この最適化を使用します。
パブリケーション用のスナップショット ジョブを追加します。詳細については、「パブリケーションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
パブリッシャ側のパブリケーション データベースに対して、sp_addmergearticle を実行します。次のパラメータを指定します。
- @publication - 手順 1. で指定したパブリケーション名
- @article - アーティクルの名前
- @source_object - パブリッシュするデータベース オブジェクト
- @subset_filterclause - アーティクルを行方向にフィルタ選択するために使用する、オプションのパラメータ化されたフィルタ句
- @partition_options - フィルタ選択されるアーティクルのパーティション オプション
パブリケーションの各アーティクルに対し、手順 3. を実行します。
(省略可) パブリッシャ側のパブリケーション データベースに対して sp_addmergefilter を実行し、2 つのアーティクル間に結合フィルタを定義します。詳細については、「マージ アーティクル間の結合フィルタを定義および変更する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。
既存のパブリケーションに対するマージ フィルタの動作を表示して変更するには
(省略可) パブリッシャ側のパブリケーション データベースに対し、@publication を指定して sp_helpmergepublication を実行します。結果セットの keep_partition_changes および use_partition_groups の値を調べます。
(省略可) パブリッシャ側のパブリケーション データベースに対して、sp_changemergepublication を実行します。@property には use_partition_groups を指定し、@value には true または false を指定します。
(省略可) パブリッシャ側のパブリケーション データベースに対して、sp_changemergepublication を実行します。@property には keep_partition_changes を指定し、@value にはtrue または false を指定します。
メモ : keep_partition_changes を有効にする場合、まず use_partition_groups を無効にして、@force_reinit_subscription に 1 を指定します。 (省略可) パブリッシャ側のパブリケーション データベースに対して、sp_changemergearticle を実行します。@property に partition_options を指定し、@value に適切な値を指定します。このフィルタ選択オプションの定義については、「sp_addmergearticle」を参照してください。
(省略可) 必要に応じてスナップショット エージェントを開始し、スナップショットを再生成してください。新しいスナップショットの生成が必要な変更の詳細については、「パブリケーションおよびアーティクルのプロパティの変更」を参照してください。