データベースの「統計情報」と「パフォーマンス遅延」の関係:SQL Serverトラブルシューティング(40)(1/2 ページ)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「データベースの統計情報とその活用方法」を説明します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
前回までは、SQL Serverのパフォーマンス遅延に対処するために必要な情報をきちんと採取しておく重要性とその方法を説明してきました。今回は、SQL Serverの実行プランにおいて、それを作成するのに必要な「統計情報」の基礎を解説します。
「統計情報」とは何か
SQL Serverにおける統計情報とは、「テーブルやインデックス内で、どんな値が、どんな頻度で出現するのかをまとめた情報」のことを指します。この情報から、データベース内では「どんなレコード操作を行えば効率的に処理を実行できるか」を、統計学の考え方を用いて推定しています。
例えば、あるテーブルで作成される統計情報は、既定動作では“全データを対象”とした分布までは作りません。効率を考慮して、統計学的に十分とされる、ある程度間引いた(サンプリングした)データから分布情報を作ります。統計情報は、「DBCC SHOW_STATISTICS」コマンド、または「SSMS(SQL Server Management Studio)」で表示できます(図1)。
図1では、「TABLE1」というテーブルに存在する「PK__BigTable__3213E83F438B8414」という名前の統計情報の内容を「DBCC SHOW_STATISTICS」コマンドで確認しています。
確認している「PK__」から始まる統計情報は、テーブルに主キーを設定したときに自動的に作られた統計情報です。PKはPrimary Keyの略です。統計情報の出力は3パートに分かれています。最初は「統計情報全体」のプロパティ、2つ目は「密度や平均長、列名の情報」、3つ目は「実際に統計に含まれるヒストグラム情報」が出力されます。ヒストグラムとは、ある範囲に値が幾つあったのかを表した度数分布の値のことです。
あらためて図1の結果からは、「100万行」あるテーブルのうち、「23万6844行」を参照して統計情報が作られていること、そして、列の平均長は「8バイト」であることなどを確認できます。
もっとも、トラブルシューティングのためにこの情報を参照することはめったにないかもしれません。しかし、統計情報の原理を理解していることで、起きている現象を正しく把握できることもあります。この機会に、「こうなっている」ことを理解しておいてください。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】 - データの登録を行うINSERT文
- 複数の条件を指定してSELECT文を実行する
前回は、SELECT文の初歩の初歩を解説しました。今回は、複数の条件を指定して、目的のデータを取り出す方法を解説します(編集部) - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。