2

SQL Server が実際にクエリの実行をより詳細に処理する方法に関する情報を探しています (たとえば、どのデータがバッファー/メモリに保持されているか、テーブルの 1 つの列だけに更新の変更があった場合でも新しいデータを取得することをどのように決定するかなど)。クエリなどで)

ソースを知っている人がいたら教えてください。


SQLサーバー2000を使用するWebアプリケーションがあり、30秒ごとにテーブル(ダッシュボード)のほぼ70%を頻繁に読み取ります。同時に多くの書き込みが発生しています。

上記のシナリオを最適化するためのヒントを教えてください。

4

5 に答える 5

1

内部のタイプの質問に答えるには多くの投稿が必要になるため、ホワイト ペーパーやブログ、書籍を読み始めることをお勧めします。

2000 年の Ken Henderson の SQL Server Architecture は内部の詳細を提供します。SQL の最新版については、2005 年の実践的なトラブルシューティングを行いましたが、これは悪くありません。Kalen Delaney の SQL 2008 Internals の本は非常に優れています。

于 2010-01-21T15:42:23.000 に答える
1

最適化問題を解決する方法について、誰もあなたに答えを与えることはできません。これには、データベース サーバーへのアクセスが必要です。問題を解決するには、データベースがどのように機能するかを大まかに理解する必要があります。そのためには、いくつかの資料を読む必要があります。

オンライン リソースは問題ありませんが、次の 3 冊の本は貴重です。最初の 2 冊の本には、SQL Server の仕組みに関する非常に詳細な情報が記載されています。最後のガイドはクエリの書き方のガイドですが、エンジンがクエリをどのように表示するかについても説明しています。

  1. Kalen Daleney: Sql Server 2008 の内部
  2. Sql Server 2005: 実用的なトラブルシューティング:
  3. Ben Gan et al : SQL Server 2008 の内部: T-SQL クエリ
于 2010-01-21T15:57:44.703 に答える
0

実行計画を検討する必要があります。

クエリを実行する前にまたはを押しCtrl-Lてください。SSMSSET SHOWPLAN_TEXT ON

これにより、使用されているインデックス、適用されている結合アルゴリズムなどの詳細情報が得られます。

統計を表示することもできます。

SET STATISTICS TIME ON
SET STATISTICS IO ON

、これにより、実際のテーブルやキャッシュなどから何回の読み取りが行われたか、およびCPU各クエリにかかった時間 (実際と時間) に関する情報が得られます。

于 2010-01-21T15:42:03.060 に答える
0

SQL Server 2008 のバッファ管理について: http://msdn.microsoft.com/en-ca/library/aa337525.aspx

次に、左側のサイドバーで他のテーマに関する情報を参照できます。

于 2010-01-21T15:49:58.360 に答える
0

外部ソースに関する限り、MSDNには、SQL Server 2000 インストールの最適化に関する包括的なリソースがあり、特にパフォーマンスとスケーラビリティに関するPatterns & Practicesペーパーがあります。

どこから調べればよいかわかっている場合は、前述のように、SQL プロファイルとクエリ プランを調べるボトムアップ アプローチを採用してください。それ以外の場合は、上から順に、クエリの再コンパイルに伴うコスト、効果的にインデックスを作成する方法、およびクエリ オプティマイザーが統計を使用する方法について学びます。

于 2010-01-21T15:50:59.410 に答える