mixiユーザー(id:2416887)

2020年07月22日02:48

132 view

Oracle DBとAccessで戯れる

一部の実装がAccessのリンクテーブル機能を用いて、
Oracle DBのデータベースとリンクさせて、
まるでAccess内のテーブルのような動作にさせて色々処理を実行している。
Accessを知ってるものからすれば、かなり実装しやすいのだが、パフォーマンスにかなり問題がある。
特にVPN間でやるには致命的に問題が発生する。
DBにとっては、数千テーブルの処理は10秒以内で完結するところが、15分とか行ったりする。怖い。

そんなわけで、こに脱リンクテーブルを行うために、
現在色々やっております。
DELETE文はパススルークエリで簡単に実装することができた。
問題なのは、ローカルDBテーブルから、OlacleDBへのインサート。
色々調査したのですが、ねざさん、バルクインサートを理解できぬ(笑)
調査結果からだと、この機能が一番速いのだが。

結局分からなかったので、その手前にマルチインサートという機能がある。
基本的なインサートは1レコードにつき、
1個のSQL文を発行するため、
1000レコードある場合は、1000回発行する。
SQL実行は、非同期でなく、いちいちエラー確認や追加件数などを受け取るため、
この1000回実行が恐ろしいオーバーヘッダとなるわけだ。
マルチインサートはこれを1個の文にまとめられるので、
かなりオーバーヘッダが解消される。

でも、色々やった結果、
175列あった場合、300レコードあたりが限界の模様。
しかも微妙に遅い。
この場合、もしかしたら100レコード*10回の方が早いかも。
複雑すぎる。
1 0

コメント

mixiユーザー

ログインしてコメントを確認・投稿する

<2020年07月>
   1234
567891011
12131415161718
19202122232425
262728293031