- - PR -
ストアドのDB再起動後のレスポンス
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-13 09:16
MeijiKさん
度々のアドバイスありがとうございました。 > どう調べてストアドではなくクエリが遅いことがわかったのですか? ストアドで動的に作成しているSQL文でビューを作成しました。 変数に設定される項目は固定値にしましたが、それによりビュー自体のレスポンスは、遅くなることはあっても速くなることはないと思ってます。そしてそのビューを再起動直後とそうでない時に実行した場合、同じような処理時間の違いが発生しました。 ビューは凄い単純な内容です。 *------------------------------------------------------------------------* CREATE VIEW dbo.vwVIEW AS SELECT SUM(tblTABLE.fldA1) AS SumA1 FROM dbo.tblTABLE WHERE (tblTABLE.fldA1 >= 10000) AND (tblTABLE.fldA1 < 100000) *------------------------------------------------------------------------* unibonさん アドバイスありがとうございます。 2倍程度ならまだ納得できるのですが、5倍近くかかります。 しかもストアドであればコンパイルが原因と思うのですが、ビューで遅くなる理由が納得できません。 |
|
投稿日時: 2007-02-13 12:13
DBMSは、データページやインデックスページを可能な限りメモリ上にキャッシュし、
そのページを使用する検索処理を高速化しています。DBMSを起動して最初の検索処理 では当然キャッシュは空っぽですので、すべてハードディスクから読み取る必要が あります。一度検索処理が実行されればそれらのページはキャッシュに乗るため、同じ 検索を実行すれば高速に処理されます。 |
|
投稿日時: 2007-02-13 12:40
uk様
アドバイスありがとうございます。 キャッシュが空っぽなのが原因なのですね。OracleやPostgres等の他のDBも使用したことがありますが、通常10秒で終わるものが50秒もかかるような事例がなかったもので、何か他に原因があるものかと思っていました。 夜間のバックアップ後の再起動時のバッチで、ダミーのSQLを実行させて初期化されたキャッシュにページを乗せる等の対策を検討してみます。 |