概要と言うかはじめにと言うかそんな感じのこと
SQLServer(SQLServer2005)で急にパフォーマンスが悪くなることがあったわぁ…なんて時には、データベースファイルまたはログファイルの自動拡張・圧縮が関係していることがあります。
要チェック。
とりあえずここ読んどけ
このページ(参照:MSDN)でだいたい概要はつかめるので、読んどけ。
といってもアレだから、一言で言うと、
- 自動拡張・圧縮が発生しないように設定しとけ。
ということ。理由は
- 自動拡張が発生すると、拡張処理が終わるまでトランザクションが終わらない。
- しかも、ログファイルの場合は他のトランザクションもそれを待つので、さぁ大変なことに。
- 自動拡張・圧縮をするとHDDの断片化が大変なことになる。巨大なディスクのデフラグなんて、定期的にできないよねぇ。
分かりやすい一文としては、
管理された運用システムの場合は、予期しない拡張が発生した場合に備えた非常時対策としてのみ、自動拡張を考える必要があります。自動拡張を日常的に使用して、データおよびログの拡張を管理しないようにしてください。
(参照:MSDN、「適切な運用方法」の項)
つまり、自動拡張機能はサービス継続を行うための緊急回避的機能であって、常用する機能じゃないってこと。
各ファイルの監視方法
パフォーマンスモニタで監視できます。
- データファイル
Server:Databases オブジェクトの Data File(s) Size (KB) カウンタ - ログファイル
Server:Databases オブジェクトの Log File(s) Size (KB) カウンタ
Server:Databases オブジェクトの Log File(s) Used Size (KB) カウンタ
なんでデータファイルのほうにはUsed Sizeカウンタがないのだろう…