一部の実装がAccessのリンクテーブル機能を用いて、
Oracle DBのデータベースとリンクさせて、
まるでAccess内のテーブルのような動作にさせて色々処理を実行している。
Accessを知ってるものからすれば、かなり実装しやすいのだが、パフォーマンスにかなり問題がある。
特にVPN間でやるには致命的に問題が発生する。
DBにとっては、数千テーブルの処理は10秒以内で完結するところが、15分とか行ったりする。怖い。
そんなわけで、こに脱リンクテーブルを行うために、
現在色々やっております。
DELETE文はパススルークエリで簡単に実装することができた。
問題なのは、ローカルDBテーブルから、OlacleDBへのインサート。
色々調査したのですが、ねざさん、バルクインサートを理解できぬ(笑)
調査結果からだと、この機能が一番速いのだが。
結局分からなかったので、その手前にマルチインサートという機能がある。
基本的なインサートは1レコードにつき、
1個のSQL文を発行するため、
1000レコードある場合は、1000回発行する。
SQL実行は、非同期でなく、いちいちエラー確認や追加件数などを受け取るため、
この1000回実行が恐ろしいオーバーヘッダとなるわけだ。
マルチインサートはこれを1個の文にまとめられるので、
かなりオーバーヘッダが解消される。
でも、色々やった結果、
175列あった場合、300レコードあたりが限界の模様。
しかも微妙に遅い。
この場合、もしかしたら100レコード*10回の方が早いかも。
複雑すぎる。
ログインしてコメントを確認・投稿する