読者です 読者をやめる 読者になる 読者になる

crmprogrammer38の日記

プログラマのメモ

【TERADATA】 1件ずつinsertは性能が著しく落ちるよ

TERADATAは、大量データを処理するようになっている

TERADATAへのデータロードは、ファイルからであれば、FASTLOADやMULTILOADなどを使います。

 

ETLツールで他のデータベースからデータを取得して、TERADATAに入れる処理を作成することも多いと思います。

 

ETLツールで、「ODBC接続」、「JDBC接続」を使って処理を作成する場合、1件ずつ処理すると、極端に遅くなるので注意が必要です。

 

ETLツールで一度に複数件をまとめてをinsertとかupdateできる仕組みがあれば、まとめてinsertやupdateを実行するようにETLを作る必要があります。

 

自分でデータロード処理のプログラムを書く場合も1件ずつinsertを発行しないように注意する。

具体的にはjavaで開発する場合、PreparedStatementとexecuteBatchを使用することで大分早くなります。TERADATAは、addBatchでつめこめるだけつめこむと性能があがりました。もちろんjavaのヒープサイズは多めにとっておかないと、メモリーエラーの可能性があるので、5万件とか10万件などが目安になると思います。