misc.log

日常茶飯事とお仕事と

Tech・Ed Day2

二日目。途中中だるみで眠くなったので(昼食食べすぎ)、SQL Server 2005のミラーリングに関するHands On Labに参加する。
てっきり物理的に別のサーバーにミラーを作るのかと思ったら、演習では1サーバー上の3つのインスタンスに、「プリンシパル」「ミラー」「ウィットネス」の役割を与えてミラーしていた。設定は非常に簡単で、また、メイン(プリンシパル)が停止した際の切り替えもばっちり。これは使える?
ところで、ミラーリングするDBのプロパティに、「同期」「非同期」とあったので、講師の方に聞いてみた。ミラーリングは、

  1. プリンシパルの変更をトランザクションログに記録
  2. ミラーのトランザクションログを更新
  3. 両方のログ更新が完了したら、プリンシパルのデータを更新
  4. ミラーも更新

という手順を内部で行うことで実現しているが、これが「同期」タイプ。この処理だと、パフォーマンスという観点からだけ見ると、やはり速度低下は免れないそうだ。というわけで、ミラーとプリンシパルを物理的に別サーバーにする場合、ネットワーク的な距離は短くし、十分な帯域を使えるようにしておかないと速度劣化が目立ってしまうとか。
一方、非同期は上記のような2フェイズのコミットを行わないので、速度は速いが、厳密にはミラーリング仕切れないタイミングが発生するから、信頼性には欠ける。
どっちにしても、この手軽さは...いいかもだ。