I/Oに関連するパフォーマンスの問題を発見するためにブログで推奨されていたので、DBCC Traceon(3502、3504、3605、-1)を使用しています。 MS SQL Server 2008 R2 SP1を実行しています
SQLログファイルの結果は次のようになります(数値は少しごまかしています)。
チェックポイント終了を記録しようとしています
最後のターゲットは未処理2、avgWriteLatency 40ms
平均スループット:0.67 MB /秒、I/O飽和:79、コンテキストスイッチ201
FlushCache:1447ミリ秒で、69書き込みで125ブフをクリーンアップしました(新しいダーティバフは0を回避しました)
Ckpt dbid 9フェーズ1終了(8)
チェックポイントの開始を記録しようとしています。
これを読む方法がわからない、または本当に意味のあるものを得る方法でそれを分解する。
「最後の目標未達」とはどういう意味ですか? "
平均書き込みレイテンシは、書き込みごとにかかるオーバーヘッド時間を意味しますか?または書き込み間の時間? 40msは高いようですが、物理ドライブは1TBで、RAID5が構成されています。
I/O飽和とは何ですか?
コンテキストスイッチとは何の関係がありますか。コンテキストスイッチはマルチタスクに関係していると思います。ジョブ/書き込み間の変更。
FlushCache。これはキャッシュをクリアすることに関係していることを理解しています。バフとは何ですか?これらのページのデータを書き込む必要がありますか?汚いバフとは何ですか?なぜ彼らは避けられるのでしょうか?
詳細な内訳をいただければ幸いです。
オンにしたトレースフラグは、 チェックポイント が舞台裏で何を行っているかを示します。
上記の詳細については、Paul Randallの ブログ投稿 を参照してください。また、 最適なパフォーマンスのための微調整 には優れた情報があります-特にIn Search of Spikesセクション。
いくつかの本当に内部の読書:
チェックポイントの動作に直接集中するのではなく、DMVとPerfmon(ディスク関連)を確認することをお勧めします-
参照できます I/Oボトルネックの調査
私の答え:
BufsはSQLページであり、8KBページ、8ページ(実体あたり8ページ)(ページのグループ)であり、64KBであり、SQLデータベースファイルの最小ブロックです(ただしログファイルではなく、ログファイルは物理ディスクを使用できます)最小のブロックサイズ、通常512バイト)
したがって、私自身の例では、125ブフは125ページであり、ほぼ1MBのデータが69回の書き込みに広がりました。 125ページを書き込むのに合計1447かかりました(基本的に125x8KBを書き込むのに1447秒)。スループットにかかる時間を倍増すると、書き込まれたデータのサイズが得られ、125に非常に近くなります。
ダーティバフは、ダーティページです。これは、変更されたページですが、キャッシュ以外の変更が反映されていません。
私はまだI/O飽和を理解していません。
書き込みレイテンシの平均は、チェックポイント(1447)を完了するのにかかった時間を書き込み回数で割ったものです。この場合、20.97 msである必要があります。したがって、例で使用した数値は正しくありません。同じログエントリからのものではありません。
このサーバーは統計に基づいてパフォーマンスが低下しているようです。