2017-06-07 44 views
0

私は、SQL Serverからmysqlのテーブルを更新または挿入するために挿入/更新を使用しています。仕事はクレーンとして設定されています。ジョブは8時間ごとに実行されます。ソース表のレコード数は約400000です。約8時間ごとに約100レコードが更新または挿入されます。Talend - 挿入/更新とテーブルファイルテーブル

ソースレベルでは、最後の実行と現在の実行の間でのみ変更された実行をとるような仕事をしています。

私は100行を更新/挿入するには、30分かかることがわかりました。

しかし、もう1つの方法は、400000をすべてファイルにダンプし、次に転送先テーブルを切り捨てて、すべてのレコードをもう一度挿入することでした。このプロセスはすべてのジョブが実行されるたびに実行されます

なぜ、挿入/更新に時間がかかりますか?

おかげ Rathi

答えて

0

あなたがソースレベルで、私は最後の実行と現在の実行の間に変更の実行を取るような離れでジョブを実行言ったように。

  • だから
  • は一時テーブルから分日付変更日付を取るか、あなたはソースからのみ変更された行を抽出してからすべての行を削除するために使用するのと同じ基準を使用して一時テーブル内のすべてのこれらの変更された行を挿入デスティネーションテーブル
  • 次に、tempからendテーブルのすべての行を挿入できます。

質問がありましたら教えてください。

+0

こんにちはシャラードですが、やはり削除はコストのかかる操作です。私は挿入/更新プロセスの遅延の原因を知りたいと思います。または、削除が唯一のオプションである場合 –

0

データベースがどのように構成されているかわからないと、正確な理由はわかりませんが、ターゲット表に索引がないため、更新が遅いと言えます。 挿入/更新キー列にインデックスを追加すると、処理が高速になります。
また、挿入するたびにコミットしていますか?その場合は、自動コミットを無効にし、tMysqlOutput -- OnComponentOk -- tMysqlCommitのように成功すればコミットします。

+0

こんにちはiMezouar、私はあなたの解決策を試みます。ありがとう!!! –

+0

さらなる助けが必要な場合は教えてください; – iMezouar

+0

確かに:)ありがとう!! –

関連する問題