FAQ:実行時間の長い I/O を示すエラー833について

SQL Server の ERRORLOG に記録される下記のメッセージについて、「ERRORLOG に出てたのですが何か影響がありますか?」といったお問い合わせを頂くことがあります。公開されている情報もありますが、改めてここでメッセージの意味などについて情報を纏めておこうと思います。

2011-02-14 12:01:53.79 spid2s      SQL Server has encountered 4 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [C:\XXXXX.mdf] in database [XXXXX] (6).  The OS file handle is 0x0000000000001708.  The offset of the latest long I/O is: 0x00000f08302000

メッセージの意味

このメッセージは、SQL Server がディスクに要求した I/O リクエストが、15 秒以上経過しても完了していないことを示します。

SQL Server はディスクに対して非同期の I/O リクエストを行います。このメッセージは、おおよそ 10 秒間隔で非同期 I/O のリクエストをチェックし、まだ完了しておらずかつ 15 秒以上経過している I/O リクエストが存在した場合に出力されます。この事からお判り頂けると思いますが、SQL Server 内部で問題が発生していることを示しているわけではなく、SQL Server の外部で I/O リクエストが遅延している状況を示すメッセージとなります。

影響

メッセージからは、どの様な処理の書き込み or 読み取りが影響を受けたかについては、判断を行うことはできません。判ることは対象のデータベースファイルへの I/O リクエストが遅延しているという事実だけとなるため、対象データベースへの処理が遅延した可能性があると判断できます(クエリがタイムアウトする等の影響が出たかまでは判りませんが……)。

対応

稀に単体で記録されるようなシチュエーションで、特に影響などの報告が無ければ、無視いただいても問題はありません。

定期的に出力される状況であれば、ディスク I/O がボトルネックとなっていないか、ハードウェアに関する問題が発生していないか等を確認し、状況に応じた対応を行う必要があります。

SQL Server の Books Online では、ウィルス対策プログラムの影響を排除するため、スキャン対象から SQL Server 関連のファイルを除外するように記載があります。関連ファイルなどについては、下記のサポート技術情報を確認してください。

KB309422
How to choose antivirus software to run on computers that are running SQL Server

参考情報

KB2137408
SQL Server logs "Msg 833" when I/O delay problems occur

SQL Server 2012 Books Online
MSSQLSERVER_833