私は現在、データプッシュスクリプトを書き直しています別のサーバ上のMSSQLデータベースからデータを取り出し、そのデータをMySQLデータベースに挿入します。このプロセスは夜間に実行され、PHP経由で処理されます。
元のスクリプト TRUNCATE
夜間にすべてのデータを再挿入します。テーブルの中には、MSSQLデータベースに由来する一次キーがあります。いくつかの表はそうではありません。
私は、現在持っていないMySQLテーブルにジェネリックプライマリキーを追加することを検討しています。 INSERT ... ON DUPLICATE KEY UPDATE
テーブルを空にして毎晩データを再挿入するのではなく、主キーは、このプロセス以外の理由で使用されません。
プロセスを高速化するか、リソースを大量に消費しないか INSERT ... ON DUPLICATE KEY UPDATE
対 TRUNCATE
その後 INSERT
スクリプトは現在実行していますか?現在のところ、それらを持っていないテーブルで一般的な主キーを作成するという面倒なことはありますか? INSERT ... ON DUPLICATE KEY UPDATE
?私はこのスクリプトから最高のパフォーマンスを探しています。
回答:
回答№1は0それ以外の一般的な答えを与えるのは難しいですあなたのデータの詳細を知っている。私は行内のテーブルのサイズを知りたいし、Innodbを使っているならば。しかし、テーブルが1000行未満で、かつ/またはInnodbを使用していない場合、そのままそのまま残しておきます。しかし、大きなテーブルを使用している場合は、INSERT..ON DUPLICATEメソッドを使用してスピードが飛躍的に向上しています。
良いプロセスは、大きなテーブルの1つまたは2つを切り替えて、速度の向上を測定することです。価値がある場合は、残りの部分を進めてください。