Advanced Usage

LiveCompareの実行が終了すると、作業ディレクトリにlc_session_<session_id>というフォルダーが作成されます。このフォルダーには、次のファイルが含まれています。

  • lc_<execution_mode>_<current_date>.log:セッションのログファイル。

  • summary_<current_date>.out:処理されたすべてのテーブルのリストを表示します。 各テーブルについて、LiveCompareがテーブルの処理にかかった時間を示します。 行の合計数と処理された行数、数 テーブルで違いが見つかり、無視される列の最大数も見つかりました。 もしあれば。

完全な要約を取得するには、出力データベースに対して次のクエリーを実行こともできます。

select *
from <output_schema>.vw_table_summary
where session_id = <session_id>;
  • differences_<current_date>.out:違いがある場合、このファイル それぞれの違いに関する有用な情報を示します。次の場合、このファイルは生成されません。 違いはありません。

例、差分リストは次のようになります。

+-------------------+-------------------------+-----------------+---------------------+
| table_name        | table_pk_column_names   |   difference_pk | difference_status   |
|-------------------+-------------------------+-----------------+---------------------|
| public.categories | category                |             (7) | P                   |
| public.categories | category                |            (10) | P                   |
| public.categories | category                |            (17) | P                   |
| public.categories | category                |            (18) | P                   |
+-------------------+-------------------------+-----------------+---------------------+

すべての詳細との違いの完全なリストを取得するには、出力データベースに対して次のクエリーを実行こともできます。

select *
from <output_schema.vw_differences
where session_id = <session_id>;

LiveCompareコンセンサスがどのデータベースを分岐させるかを決定する方法を理解するために、ビューvw_consensusはコンセンサスアルゴリズムの詳細を提供できます。

select *
from <output_schema.vw_consensus
where session_id = <session_id>;
  • apply_on_the_first_<current_date>.sql:違いがある場合、これ ファイルには first データベースに適用されるDMLコマンドが表示されmake。 first データベースは他のすべてのデータベースと一貫しています。例、 上記の違いにより、このスクリプトは次のようになります。

BEGIN;

DELETE FROM public.categories WHERE (category) = 7;
UPDATE public.categories SET categoryname = $lc1$Games Changed$lc1$ WHERE (category) = 10;
INSERT INTO public.categories (category,categoryname) VALUES (17, $lc1$Test 1$lc1$);
INSERT INTO public.categories (category,categoryname) VALUES (18, $lc1$Test 2$lc1$);

COMMIT;

LiveCompareはこのスクリプトを自動的に生成します。 first データベースの不整合を修正オーダーには、 first データベースでスクリプトを実行だけです。

LiveCompareは、一貫性のないデータを持つ各データベースに対して同様のapply_on_*.sqlスクリプトを生成します。

修正する違い

LiveCompareは、次の相違点を特定して修正を提供できます。

  • データ接続の大部分に行が存在します。修正は 異なるデータベースのINSERT。

  • データ接続の大部分には行が存在しません。修正は 異なるデータベースのDELETE。

  • すべてのデータベースに行が存在しますが、一部の列の値が一致しません。修正は 異なるデータベースのUPDATEである。

デフォルトでは、difference_statements = all。つまり、LiveCompareは、検出された差分ごとに3つのDMLタイプ(INSERT、UPDATE、DELETE)をすべて適用しようとします。ただし、difference_statementsの設定値を変更することにより、差分修正を提供するときに考慮するDML LiveCompareのタイプを指定することができます。

  • all(デフォルト):INSERTs、UPDATEs、およびDELETEsを修正。

  • inserts:INSERTsのみを修正。

  • updates:UPDATEsのみを修正。

  • deletes:DELETEsのみを修正。

  • inserts_updates:INSERTsおよびUPDATEsのみを修正。

  • inserts_deletes:INSERTsおよびDELETEsのみを修正。

  • updates_deletes:UPDATEsおよびDELETEsのみを修正。

difference_statementsの値がall、updates、inserts_updates、またはupdates_deletesである場合、NULLを列に設定するすべてのUPDATEを無視するようLiveCompareに指示することができます。

差分ログ

テーブルdifference_logは、LiveCompareがチェックするたびに差異に関するすべての情報を保存します。ユーザーはLiveCompareを再チェックモードで複数回実行できるため、この表は、LiveCompareが再チェックを行っていた時間枠で違いがどのように変化したかを示しています。

  • 検出済み(D) :違いが検出されたばかりです。再確認および修正モードでは、 LiveCompareは、すべてのパーマネントとタイの違いを検出済みとしてマークし、 それらを再確認してください。

  • パーマネント(P) :データがまだ残っている場合、差異を再チェックした後 LiveCompareは相違点を Permanent としてマークします。

  • Tie(T) :Permanentと同じですが、決定するための十分なコンセンサスがありません どの接続が大半です。

  • 不在(A) :再チェック時に、LiveCompareが違いを発見した場合 もう存在しない(行は両方のデータベース間で一貫している)、その後 LiveCompareは、差異を 不在 としてマークします。

  • Volatile(V) :再チェック時に、一貫性のない状態でxminが変更された場合 行、次にLiveCompareはその差を Volatile としてマークします。

  • 無視(I) :ユーザーは、特定の差異の差異再チェックを停止できます。 手動でファンクションを呼び出す <livecompare_schema_name>.accept_divergence(session_id, table_name, difference_pk) 出力PostgreSQL接続で。例:

SELECT livecompare.accept_divergence(
    2                   -- session_id
  , 'public.categories' -- table_name
  , $$(10)$$            -- difference_pk
);