Syniti DR 9.8で追加されたリフレッシュ処理のパーティション機能を使用すると、リフレッシュ(全件転送)時の分割処理を構成でき、複数の並列スレッドがデータを処理するため、パフォーマンスを向上できます。
今回はこのリフレッシュ処理のパーティション機能を紹介していきます。
パーティションの作成
パーティション機能を利用するために、事前にレプリケーションで設定を行う必要があります。
1.メタデータエクスプローラでレプリケーションを選択します。
2.右クリックし、「プロパティ」からレプリケーションプロパティを開きます。
3.「優先」>「リフレッシュ」に移動し「パーティションを使用」にチェックを入れます。

4.「パーティションを追加」をクリックし、where句を指定し、分割条件を設定します。

これで設定は完了です、リフレッシュレプリケーションを実施するとパーティション機能を利用してリフレッシュが実施されます。ただ、デフォルトの表示では各パーティションでの処理進捗を確認できません。表示を変更するにはレプリケーションモニターで「パーティションの表示/非表示」のアイコンをクリックします。

簡易テスト
簡易的なテストとして10000000行、サイズとしては350MB程度のテーブルを従来のシーケンシャルなバルクインサートと、2、4、10分割でパーティション機能を使いバルクインサートした場合の結果を比較してみました。
分割数 | 時間 |
シーケンシャル | 1分54秒 |
2分割 | 1分32秒 |
4分割 | 1分11秒 |
10分割 | 1分31秒 |
上記のように4分割した場合が最も高速となる結果となりました。おそらく、あまりに分割数が多くなってしまうと、データベース側のリソースが飽和してしまい、効果が低くなるためと想定されます。
今回の環境はテスト用の環境であるため、このような結果となりましたが、よりパフォーマンスの高い環境であれば、分割数を増やすことでより効果が期待できます。
このため、最適な分割数といったものは環境や対象となるテーブルごとに異なり、チューニングが必要にはなりますが、大規模なテーブルであればあるほど効果が期待できる機能ですので、リフレッシュ速度でお悩みの場合には是非ご検討ください。
関連したトピックス
- レプリケーション対象テーブル構成変更後のSyniti Data Replication (旧DBMoto) マッピング対応について
- データレプリケーションソリューションに求められる9つのポイント
- データ分析基盤へもSyniti Data Replication(旧DBMoto)で簡単レプリケーション! Google BigQueryへの接続方法
- PostgreSQLからの差分連携(LSA)セットアップ手順【Syniti DR】
- RDS PostgreSQLからの差分セットアップ【Syniti DR 9.6】
- Syniti Data Replication (DBMoto) の監視方法について
- 多様化するデータは小回りの利くツールでガバナンスの徹底を
- Syniti ReplicateによるRFCを使用したSAPシステムからのデータレプリケーション
- DBMotoからSyniti Data Replicationへのアップグレード方法
- Azure Synapse Analytics(旧 SQL DW)へのレプリケーションを検証してみました[Syniti DR]