0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQL Server データベース読み書きパフォーマンスチェック(Disk I/O)とパフォーマンス向上施策

Last updated at Posted at 2019-11-13

意外に重要・・・ディスクパフォーマンス

とある保守環境でレガシーなサーバーを利用しており、 ~~CPU, メモリに問題ありません、ハードウェアに問題ありませんと「協力会社」の方が報告してきたなかで誰も気にしていなかった(何か遅いと言えばCPU, メモリばかり考えますよね?)~~ディスクパフォーマンスを調査した事例。OSレベルのパフォーマンスカウンターでもわかるが最終のSQL Server再起動時から(再起動でリセットはかかる)SQLで取れるログがいくつかあり下記がSQLの例。影響しているデータファイル(file_idで)とファイル読み書きの良し悪しがわかる。

読み書き応答速度チェック

SELECT DB_NAME(database_id) AS [データベース名] , file_id , CAST(( io_stall_read_ms + io_stall_write_ms ) / ( 1.0 + num_of_reads + num_of_writes) AS NUMERIC(10,1)) AS [平均読書ストールミリ秒] , CAST(io_stall_read_ms / ( 1.0 + num_of_reads ) AS NUMERIC(10, 1)) AS [平均読取ストールミリ秒] , CAST(io_stall_write_ms / ( 1.0 + num_of_writes ) AS NUMERIC(10, 1)) AS [平均書込ストールミリ秒] , io_stall_read_ms , num_of_reads , io_stall_write_ms , num_of_writes , io_stall_read_ms + io_stall_write_ms AS [io_stalls] , num_of_reads + num_of_writes AS [total_io] FROM sys.dm_io_virtual_file_stats(NULL, NULL) ORDER BY [平均読書ストールミリ秒] DESC ;

file_id特定後ファイル名を特定

SELECT FILE_NAME(xxxx) AS 'File Name xxxx',FILE_NAME(yyyy) AS 'File Name yyyy';

肌感覚で大した仕組みでないデータベースで30〜50ミリ秒を上回っていたらかなり注意。最近はSSDやクラウドで速いことが多いがオンプレで特に速度が遅いSATAやSASでもRAID 10になっていないようなRAIDの組み方ではパフォーマンスが出ずシステムレスポンスが遅いという話になる。下図は実例だが、書き込みで3,000 ms 近い遅延や読み込みで200ms近い状態もある。書き込みが遅い場合、データ検証チェックをDBレイヤーで行わずアプリロジックに入れてしまう方が良い(というかそうしておいた方が拡張性、保守性が高い)。インデックスが多いと遅延につながる。同様に読み込みが遅い場合はインデックスが適切でないケースがある。ロジック見直しでなんとかなるのであれば良いが、サーバーに格納されているデータファイル全体的に天文学的に遅い数値(特に下図のようなパターン)が出ている場合はもはやインデックス云々というよりハード的な問題とほぼ断定できる。

截屏2019-11-1314.58.58.png

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?