2013年1月26日土曜日

データベースのデータ件数が増えてきたら。


1日に1000件単位で増えていくデータベースで
連続的に、データ抽出して、エクセルに集計という
形で、表示させていたVBAが、データ件数、9万件
程度で、速度が追い付かなくなってきていました。

VBで作り直して動かしてみてもやはり、速度が
追いついていないことがわかりました。

データの容量的には10メガバイトくらいなので、
なんともないのですが。

データベースの、インデックスの貼り方を工夫すればいいのかな
と思いますが、あまり、インデックスを貼りすぎると、今度は、
データ登録側のプログラムに影響してくる可能性もあります。

VBでつくり直した際に、どこで時間がかかっているのかを
よく確認してみると、少し、複雑なSQLを発行してデータを
抽出しているところだということがわかり、これだと、インデックスを
工夫しても、もしかしたら、改善しないかもと思えました。

最終的に、5秒タイマーと30秒タイマーを用意して、
時間のかからない処理は5秒タイマーのなかで処理して
時間のかかる処理は30秒タイマーの中で処理するように
しました。

これで、プログラムが止められないということは避けられました。


根本的な解決方法はまだはっきりとは見えてないですが、
直近のデータだけ残して、後は、構造が同じの別テーブルに
バックアップしていく方法を考えたほうがいいだろうなと
思えました。

0 件のコメント:

コメントを投稿