sql >> データベース >  >> RDS >> Mysql

2つの大きなデータベーステーブルを比較する

    オープンソースのPerconaToolkitをチェックしてください---具体的には、 pt-table-sync 効用。

    その主な目的はMySQLテーブルをそのレプリカと同期することですが、その出力は2つのテーブル間の違いを調整するために必要なMySQLコマンドのセットであるため、2つを比較するのに自然に適合します。

    内部で実際に行うことは少し複雑で、テーブルについて何を伝えることができるか(インデックスなど)に応じて実際には異なるアプローチを使用しますが、基本的な考え方の1つは、高速のCRC32チェックサムを実行することですインデックスのチャンクについて 、およびチェックサムが一致しない場合は、それらのレコードをより詳細に調べます。この方法は多くであることに注意してください 両方のインデックスを直線的に歩いて比較するよりも高速です。

    ただし、それは途中でしか得られません。生成されたコマンドはレプリカをそのマスターと同期することを目的としているため、すべての異なるレコードのレプリカの現在の内容を置き換えるだけです。つまり、生成されたコマンドはallを変更します レコード内のフィールド(変更されたフィールドだけでなく)。したがって、pt-table-syncを使用すると 差異を見つけるには、結果を何かにラップして、レコードの各フィールドを比較することにより、異なるレコードを調べる必要があります。

    ただし、pt-table-sync あなたがすでに難しい部分であると知っていたことを行います:差分の検出、本当に 速い。 Perlで書かれています。ソースは優れたパンくずリストを提供する必要があります。



    1. SQLiteのバージョンを確認してください

    2. 関数、プロシージャを表示する方法、postgresqlでソースコードをトリガーしますか?

    3. 2種類のフラグを持つテーブル上のLaravel関係

    4. 大きなMySQLテーブルを複数の小さなファイルとしてエクスポートする