■B2CのWEB取引サイトを構築
■DBは、Win008ServerR2+SQLServer2008R2 EE ミラーリング(同期)をVMWARE上で構築
■概要
インデックス再構成 ⇒ 日次
インデックス再構築 ⇒ 週次
をオンライン中に実施している。
とりわけ、インデックスサイズが相対的に大きい(5GB以上)のインデックスの再構成実行中に、他のオンライン処理や、バッチ処理でコミットタイムアウトが発生しており(現在、5秒で設定)、これを解決したい。1分程度の再構成中にも発生するが、ほとんどが20分以上の再構成で発生している。
インデックス再構築は、再構成を日次でやっているため、あまり対象となるインデックスがないので同事象が発生していないだけか、もしくは、再構築の処理方式では、再構成と同様の事象が発生しないのかはまだ分からない。
■仮説と質問
・ミラーリングが同期型のため、インデックス再構成のトランザクションログもミラー側に圧縮?・転送され、I/O負荷が非常に高くなる(ディスクIO負荷が高く、カレントキューレングスが200~300となる場合) ⇒ これがミラーリングだと普通なのか、どう評価すれば良いのかわからない
・I/O負荷が高く、ミラーリングへの反映がボトルネックとなり、他のオンライン処理や、バッチ処理のコミットのミラーリング側への同期反映がタイムアウトエラーとなっている?
・対応案として
・コミットタイムアウト5秒を適正な値 例:デフォルト15秒以上 に設定する。上記動作が、オンライン中のインデックス再構成動作として概ね適切で改善が難しいものである場合、一時的なレスポンス劣化を許容する
・ページ圧縮、行圧縮など圧縮機能を利用し、インデックスを圧縮することで、I/O負荷を減らす
・ミラーリング同期としても、上記の状態は異常であるため、ごくわずかなオフライン時間を利用して、インデックス再構成 or 再構築を優先度の高いものから行う
などかと考えております。
また、
・そもそも、再構成を日次で5%以上で実施しているが、それは適切か?
・断片化率がどこまで進むと、一般的に処理影響につながるものと言えるか?
という質問もあります。
以上、何か、ヒントとなるアドバイスをいただければと存じます。