SQL Server のクエリの実行状況に影響する要素として統計情報があります。
統計情報はテーブル内のデータのサンプリングとなり、この情報を使用してどのようなクエリの実行プランを使用すればよいのかを決定していきます。
本番環境と開発環境で実行時間に差が出る、タイミングによって実行時間に差が出る場合、
- インデックスの断片化状態の確認
- 統計情報の更新状況の確認
- 使用されているプランの確認
をすることがあるかと思います。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
SQL Server のクエリの実行状況に影響する要素として統計情報があります。
統計情報はテーブル内のデータのサンプリングとなり、この情報を使用してどのようなクエリの実行プランを使用すればよいのかを決定していきます。
本番環境と開発環境で実行時間に差が出る、タイミングによって実行時間に差が出る場合、
をすることがあるかと思います。
先日、SQL Server 2012 CU1 の提供が開始されました。
SQL Server 2008 以降はスリップストリームインストールが実装されているので、インストール時に修正プログラムを適用することができます。
SQL Server 2012 のインストールでの製品の更新プログラム
英語の情報だと SQL Server 2012 – CUs are Inevitable (T-SQL Tuesday #29) に既にまとめられていますね。
SQL Server のデータストレージはデータの追加 / 更新のトレンドによっては断片化が発生し、読み取りの効率が低下していきます。
今回の投稿では断片化が発生する 2 種類のパターンを見ていきたいと思います。
SQL Server 2012 CU1 の提供が開始されました。
Cumulative update package 1 for SQL Server 2012
以下の KB も公開されましたので、定期的に見ておくとよさそうですね。
The SQL Server 2012 builds that were released after SQL Server 2012 was released
SQL Server 2012 はスリップストリームインストールが可能ですので、インストール時に修正プログラムを合わせて適用したい場合にはこちらが参考になります。
SQL Server 2012 のインストールでの製品の更新プログラム
SQL Server 2012 では 2008 R2 までのオプションと異なり、[UpdateSource] が推奨されていますので従来までと修正プログラムの指定が変わっています。
SQL Server 2012 の非推奨 SQL Server 機能 によると従来までの [PCUSource] [CUSource] は使用できるが非推奨のようです。
SSMS でストアドのコンパイル発生の状況を確認していたところ、実行のたびにパフォーマンスモニタ上でコンパイルが発生していました。
初回の実行時にコンパイルイベントが発生しプランが生成され、2 回目以降はコンパイルイベントが発生していないのは確認をしていたのですが、パフォーマンスモニタのコンパイルに関しては実行のたびにカウンタがあがっている状態でした。
この挙動について少しまとめてみたいと思います。
今回の投稿では以下の情報を参考にさせていただいています。
Cache Miss in Profiler… Continued from another thread..
SQL Server の compile ロックが発生したブロックの説明
パーティショニングをしているときにパーティションキーを WHERE に含めている場合の検索効率の違いについてまとめてみたいと思います。
昨日、勉強会の後にお話をさせていただいていた中で [TABLESAMPLE] を指定した場合のデータサンプリングはどのように動作しているのかという質問を頂きました。
TABLESAMPLE の存在を知らなかったので、お話を聞かせていただきながらこんな感じですかね~というイメージで話をしていたのですが、実際どのようにデータを取得しているのか調べてみました。
Microsoft SQL Server Japan Support Team Blog さんのブログで [Tips] SQL Server エラーログとイベント ログを採取する (SQL 2000 ~ 2008 R2) についての記事がありましたので、私はログのローテーションについて書いてみたいと思います。
Read the rest of this entry »