比較パフォーマンス
------------------

LiveCompareは、実稼働システムで使用するように最適化されており、チューニングのためのさまざまなパラメーターを備えています。比較ラウンドは読み取り専用のワークロードです。ユースケース例では、4つの接続と4つのワーカーを使用して9分17秒で6つのテーブルの43,109,165行を比較し、1秒あたり約77,000行、または4時間未満で10億行の比較パフォーマンスを提供しました。

この使用例は一般的な使用例です。低負荷、テスト、移行、およびその他の特定のシナリオでは、サーバーサイドのカーソルを使用するように\ ``data_fetch_mode``
設定を変更することにより、速度を向上できる場合があります。私たちの実験では、各種類のサーバーサイドカーソルは、小さいまたは大きいテーブルが関係するユースケースでパフォーマンスの向上を提供します。

ユーザーのセキュリティに関する考慮事項
--------------------------------------

PostgreSQL
13以前の場合、LiveCompareには、比較されるすべてのデータを読み取ることができるユーザーが必要です。
PostgreSQL
14では、LiveCompareに使用できる新しいロールpg_read_all_dataが導入されました。

``logical_replication_mode = bdr``
の場合、LiveCompareにはbdr_superuserロールを持つユーザーが必要です。
``logical_replication_mode = pglogical`` の場合、LiveCompareには
``pglogical_superuser`` ロールを持つユーザーが必要です。

PGDでDMLスクリプトを適用するには、すべての分岐接続潜在的にすべてのデータ接続で、
bdr_superuserロールを持つユーザーが\ ``bdr.xact_replication``
を無効にする必要があります。

PGDが使用されている場合、LiveCompareはすべての固定行を\ ``bdr_local_only_origin``
と呼ばれるレプリケーションオリジンに関連付けます。
LiveCompareは、かなり過去のトランザクション日時を含むDMLも適用するため、データベースで実行されている実際のDMLとPGD競合がある場合、LiveCompare
DMLは常に競合に負けます。

デフォルト設定の\ ``difference_fix_start_query``
では、適用スクリプトのトランザクションはテーブルの所有者にロールを変更して、データベースユーザーが悪意のあるトリガーを書いて修正を適用するロールへのアクセスを取得しないようにします。その結果、分岐接続のユーザーは、ロールをテーブル所有者に切り替えることができる必要があります。

