0

SQL Server でデータベースを構築しています。

このDBは本当に巨大になるでしょう。ただし、非常に頻繁にクエリを実行する必要があり、非常に小さいテーブルはほとんどありません。
これらのテーブルを RAM にキャッシュしてクエリを高速化する方法はありますか?

データベースの挿入/クエリを高速化するためのアイデア/リンクは高く評価されます。
また、SQL Express から SQL Server Enterprise に移行すると、パフォーマンスが向上しますか?

前もって感謝します。

4

5 に答える 5

2

SQL サーバーは、頻繁にアクセスされる小さなテーブルを RAM に保持する優れた仕事をします。

ただし、頻繁にアクセスされる小さなテーブルは、データベースへのアクセスを回避するために、アプリケーション層でキャッシュするのに適しているように思えます。

データベースが本当に「巨大」である場合、SQL Express の 1GB RAM 制限 (および/または DB ストレージあたり 10GB 制限) に達し、その制約のないエディションが必要になります。

http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx

于 2012-07-19T03:00:25.497 に答える
0

これらの小さなテーブルが変更される頻度によっては、クエリ通知が適切なオプションになる場合があります。基本的に、データベース内のデータセットの変更にアプリケーションをサブスクライブします。正規の例はベンダーのリストです。時間の経過とともにあまり変化しませんが、いつ変化するかをアプリケーションに知らせたいと考えています。

于 2012-07-19T13:23:54.793 に答える
0

テーブルからデータを読み取り、DataTable 変数に格納できます。適切なインデックスを作成し、クエリを高速化する必要があります。

于 2012-07-19T03:09:10.857 に答える
0

C# を使用している場合は、データ キャッシュを試してみてください。
次の 3 つの手順を実行するだけです。

  • 結果をリストにフェッチする
  • データのリストをキャッシュする
  • キャッシュの結果を照会する必要があるときはいつでも、キャッシュ オブジェクトを懸念リスト タイプにキャストします。

次にコード例を示します。

List<type> result = (Linq-query).ToList();
Cache["resultSet"] = optresult;
List<type> cachedList = (List<type>)Cache["resultSet"];

これで、キャッシュされたオブジェクトを実際に使用する cachedList に対して Linq クエリを実行できます。

注:オブジェクトをキャッシュするには、次のようなより正確なアプローチを使用できます。これにより、キャッシュをより適切に制御できます。

Cache cacheObjectName = new Cache();
cacheObjectName.Insert("Key", value, Dependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)
于 2012-07-19T03:33:38.760 に答える
0

ページがクエリで使用されるほど、ページがメモリ内にある可能性が高くなりますが、テーブル レベルではなくページ レベルになります。参照されるたびにカウントが増加し、バックグラウンド プロセス (レイジー ライター) は通常、すべてのページのカウントを減少させます。メモリに移動するために新しいページが必要な場合、SQL サーバーはカウントが最も少ないページをディスクに書き込みます。したがって、テーブルのページが頻繁にアクセスされる場合、カウントが高くなり、メモリ内に長く留まる可能性が高くなります。 .しかし、さまざまなテーブルから多くのデータを読み取る何らかの大きなクエリがあり、メモリを超えると、それらのページでさえキャッシュからスローされる可能性があります.しかし、そのようなクエリがない場合ページがメモリに残る可能性が高くなります。

また、同じページが何度もアクセスされることを意味します。差分プロセスが同じテーブルから差分ページを読み取る場合、すべてのページの使用回数がそれほど多くない可能性があり、そのため、ページの一部がディスクに書き込まれる可能性があります。

バッファなどの仕組みの詳細については、以下のブログをお読みください。

http://sqlblog.com/blogs/elisabeth_redei/archive/2009/03/01/bufferpool-performance-counters.aspx

于 2012-07-19T06:54:17.510 に答える