SQL Server-DBをメモリに強制しますか?


14

SQL Server 2005 64ビットを実行する強力なWindows 2008 x64サーバー(4 x 4コアCPU、32GB RAM)があります。ページがメモリにキャッシュされるまでアクセスがやや遅い(6GB)が非常に重要なデータベースがあります(使用量は非常にランダムなI / Oであるため、特定のページがメモリとエンドユーザーにある確率は非常に低くなります)最初の遅さについて文句を言います)。ディスクは十分に高速(ローカル15K SAS)ですが、アプリはやや不格好に書かれていると思います(COTSソリューションです)。SQLServer 2005でメモリ内のデータベースを「強制」する方法があるかどうか疑問に思っていますベンダーによるので、まだキャッシュを埋める初期のブルースを避けるために、まだそれにアップグレードすべきではありませんか?

私の現在の方法は、スクリプト内の各テーブルからSELECT *を実行してメモリ内のデータページを取得しますが、一部のオブジェクト(インデックス、全文検索など)はこのメソッドによってキャッシュされません(およびスクリプトを変更してインデックスとキャッシュに適切なWHERE句を記述することは、複雑な海洋です)。

回答:


15

残念ながら、データベースを強制的にキャッシュに入れる方法はありません。あなたのブルートフォース法はおそらく最も簡単です。次のように、非常に低いしきい値設定でインデックスデフラグスクリプトを使用すると、1%断片化されている場合はインデックスを再構築するなどの方法で近づくことができます。

http://sqlserverpedia.com/wiki/Index_Maintenance

時間がかかり、ディスクへの書き込みが増えますが、インデックスの最適化と統計の更新という副作用があります。これはとにかく良い考えです。


9

OK-ブレントの答えにコメントすることはできません(まだ、十分な担当者がいないので)-しかし、デフラグルートに行く場合、必ずしもインデックスを再構築する必要はありません-それは新しいインデックスを構築するため、十分な空き領域がない場合にデータベースを拡張し、次のログバックアップが少なくともインデックスのサイズであり、ログに大量のログレコードが含まれることを保証します(復旧モデルによって異なります)。最適化ルートを実行する場合は、ALTER INDEX ... REORGANIZEを実行します。これは、空き領域(1つの8kページ)を必要としませんが、リーフレベルをメモリに読み込み、断片化されたもののみを操作しますページ。いくつかのクエリの後、非リーフレベルがすぐに入力され、(ファンアウトに応じて)リーフレベルよりもはるかに少ないデータになるはずです。


私はそれが好き--extrachars
マットロギッシュ2009年

1

そもそもデータベースオブジェクトがキャッシュからフラッシュされるのはなぜですか?SQLサービスを再起動していますか、またはデータベースをオフ/オンラインにしますか?または、他のデータベースからのキャッシングによってプッシュされていますか?

よろしく、

SCM。


1
現在、システムはテスト中であり、頻繁に再起動されます。その後、ユーザーは文句を言います。できればもっと少なくなるように
マット・ロギッシュ

接続開始からの遅延のように聞こえます。ユーザーがキャッシュされた読み取りとキャッシュされていない読み取りの顕著な違いを目にすることは期待していません。過負荷または遅いディスクなどの他の要因がない限り。
SqlACID 2009年


1

キーテーブルでFULLSCANを使用して統計を更新し、データを強制的にキャッシュに入れ、それらのテーブルの後続のDMLを非常に高速にするシナリオがいくつかありました。そして、これは実行計画に変化をもたらさないため、古い統計の結果ではありませんでした。


0

そのデータベースのみでSQL Serverの2番目のインスタンスをインストールし、そのインスタンスの最小メモリを6GBに設定してみませんか?

これにより、他のデータベースが「小さくても非常に重要な」データベースからメモリを奪うことはありません。

また、他のインスタンスをオフラインにでき、小さなDBがメモリに残ることを意味します。


0

プロファイラーを使用して、SQLを確認します。「論理」読み取りと「物理」読み取りを比較します。SQLサーバーはスマートであり、最も効率的な結果を得るために必要なRAMを使用します。

また、自動統計が最新であることも確認してください。

クエリの種類とdbテーブルのサイズの詳細がわからないと、少し奇妙に聞こえます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.