次の方法で共有


SQL Server での I/O セクター サイズの誤りによるパフォーマンスの低下

適用対象: SQL Server

この記事では、物理セクター のサイズがディスク ドライブ間で異なる場合に、SQL Server での I/O 操作の不整合によるパフォーマンスの低下を解決する方法について説明します。

概要

SQL Server では、ディスク ドライブの物理セクター サイズがサーバーまたはストレージ システムによって異なる場合に、I/O 操作がずれる可能性があります。 この状態はパフォーマンスを低下させる可能性があり、次のようなセクター サイズの不一致が明らかになっている環境では特に一般的です。

  • ストレージがアタッチされた仮想マシン
  • Always On 可用性グループ
  • ログ配布
  • ハードウェアの移行

たとえば、プライマリ サーバーが 4 KB のセクター サイズを使用し、セカンダリ サーバーが 512 バイトを使用する場合に、一般的な問題が発生します。 この問題により、ログ同期または復元プロセス中に I/O 操作が正しく配置されません。 このずれにより、復元の速度低下や同期の遅延など、パフォーマンスが低下する可能性があります。

トレース フラグ 1800 は、基になるディスクの物理セクター サイズに関係なく、SQL Server がトランザクション ログ I/O 操作に一貫した 4 KB セクター サイズを使用することを保証します。 このトレース フラグは、異なるストレージ仕様でサーバーがアップグレードまたはハードウェアに移行された可能性がある混合環境でパフォーマンスを維持するように設計されています。

書き込み負荷の高いワークロードを使用するデータベースの場合、I/O 操作を調整するとパフォーマンスが大幅に向上しますが、読み取り集中型環境では利点はごくわずかです。

現象

次のいずれかの現象が発生した場合、I/O 操作が正しく調整されていないことにより、SQL Server のパフォーマンスが低下する可能性があります。

  • 同期または復元の時間が遅い: I/O 操作が不適切な場合、特に Always On 可用性グループやログ配布などの分散 SQL Server 環境では、同期または復元時間が遅くなる可能性があります。

  • SQL Server エラー ログのエラー メッセージ: I/O 操作に関連するエラー メッセージは、次のような不適切な問題を示している可能性があります。

    There have been # misaligned log IOs which required falling back to synchronous IO.

  • 書き込み集中型操作中のパフォーマンスのボトルネック: ログ バックアップやデータベースの復元などの書き込み集中型操作では、I/O 操作の位置がずれたためにディスク待機時間が長くなり、I/O 待機時間が長くなり、パフォーマンスのボトルネックや応答時間が遅くなる可能性があります。

セクター サイズを確認する

I/O 操作のずれを回避するには、ディスク ドライブの物理セクター サイズがすべてのサーバーと記憶域システムで一貫していることを確認することが重要です。

管理者特権のコマンド プロンプトで次のコマンドを実行するとsector のサイズを確認できます。

fsutil fsinfo sectorinfo <volume path name>

次のスクリーンショットは、E: ドライブの fsutil fsinfo sectorinfo コマンドの出力を示しています。セクター サイズは 8 KB ですが、物理セクター サイズは 4 KB で、I/O 操作の配置が間違っています。

8 KB のセクター サイズのコマンド プロンプト出力のスクリーンショット。

Resolution

I/O 操作の位置がずれたためにパフォーマンスが低下し、セクター サイズを 変更できない場合グローバル スタートアップ パラメーターとして Trace Flag 1800 を使用して、SQL Server でトランザクション ログの I/O 操作に一貫した 4 KB のセクター サイズを使用するように強制できます。

トレース フラグ 1800 をスタートアップ パラメーターとして有効にするには、次の手順に従います。

  1. SQL Server がインストールされているシステムで、SQL Server 構成マネージャーを開きます。

  2. SQL Server 構成マネージャー (ローカル) を展開し、SQL Server Services を選択します。

  3. 構成する SQL Server インスタンスを右クリックし、 Properties を選択します:

    [プロパティ] が強調表示されている SQL Server サービスの右クリック メニューのスクリーンショット。

  4. SQL サーバーのプロパティで、Startup Parameters タブを選択し、[スタートアップ パラメーターの指定] フィールドに「-T1800」と入力し、[追加 を選択してパラメーターを一覧に追加します。

    SQL Server のプロパティでスタートアップ パラメーターとしてトレース フラグを追加するスクリーンショット。

  5. トレース フラグがスタートアップ パラメーターの一覧に追加されたことを確認します。 OK を選択して変更を保存します。

    スタートアップ パラメーターが強調表示されている [SQL Server のプロパティ] ウィンドウのスクリーンショット。

  6. インスタンスの起動時にトレース フラグを有効にするには、SQL Server サービスを再起動します。

関連情報

KB3009974 - 修正: ディスクのセクター サイズが異なる場合の同期が遅い