{"id":1034,"date":"2017-03-08T09:55:24","date_gmt":"2017-03-08T04:25:24","guid":{"rendered":"http:\/\/pramodsingla.com\/?p=1034"},"modified":"2017-03-08T09:55:24","modified_gmt":"2017-03-08T04:25:24","slug":"sql-server-tuning-find-io-wait-or-virtual-file-stats","status":"publish","type":"post","link":"https:\/\/pramodsingla.com\/?p=1034","title":{"rendered":"SQL Server Tuning: Find IO wait or Virtual File Stats"},"content":{"rendered":"<h2><strong>Problem Statement: <\/strong>Script to get the virtual file waits for IO waits.<br \/>\n<strong>Solution:<\/strong>\u00a0Virtual File waits are useful in identifying the IO waits occurring on any of the database file. This script is used along with <a href=\"https:\/\/pramodsingla.com\/2017\/03\/05\/msssql-server-tuning-find-wait-stats\/\">SQL server wait stats script<\/a>\u00a0to understand the IO waits well.<\/h2>\n<blockquote><p><span style=\"color:blue;\">SELECT<\/span>\u00a0<span style=\"color:fuchsia;\"><i>Db_name<\/i><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">database_id<\/span><span style=\"color:maroon;\">)<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">database_name<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">database_id<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">FILE_ID<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">io_stall_read_ms<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:fuchsia;\"><i>NULLIF<\/i><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:maroon;\">num_of_reads<\/span><span style=\"color:silver;\">,<\/span>\u00a0<span style=\"color:black;\">0<\/span><span style=\"color:maroon;\">)<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">avg_read_latency<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">io_stall_write_ms<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:fuchsia;\"><i>NULLIF<\/i><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:maroon;\">num_of_writes<\/span><span style=\"color:silver;\">,<\/span>\u00a0<span style=\"color:black;\">0<\/span><span style=\"color:maroon;\">)<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">avg_write_latency<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">io_stall<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:fuchsia;\"><i>NULLIF<\/i><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:maroon;\">num_of_reads<\/span>\u00a0<span style=\"color:silver;\">+<\/span>\u00a0<span style=\"color:maroon;\">num_of_writes<\/span><span style=\"color:silver;\">,<\/span>\u00a0<span style=\"color:black;\">0<\/span><span style=\"color:maroon;\">)<\/span>\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">avg_total_latency<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">num_of_bytes_read<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:fuchsia;\"><i>NULLIF<\/i><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:maroon;\">num_of_reads<\/span><span style=\"color:silver;\">,<\/span>\u00a0<span style=\"color:black;\">0<\/span><span style=\"color:maroon;\">)<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">avg_bytes_per_read<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">num_of_bytes_written<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:fuchsia;\"><i>NULLIF<\/i><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:maroon;\">num_of_writes<\/span><span style=\"color:silver;\">,<\/span>\u00a0<span style=\"color:black;\">0<\/span><span style=\"color:maroon;\">)<\/span>\u00a0\u00a0\u00a0\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">avg_bytes_per_write<\/span><br \/>\n<span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">io_stall<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">num_of_reads<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">num_of_bytes_read<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">io_stall_read_ms<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">num_of_writes<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">num_of_bytes_written<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">io_stall_write_ms<\/span><span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">size_on_disk_bytes<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:black;\">1024<\/span>\u00a0<span style=\"color:silver;\">\/<\/span>\u00a0<span style=\"color:black;\">1024.<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">size_on_disk_mbytes<\/span><br \/>\n<span style=\"color:silver;\">,<\/span><br \/>\n<span style=\"color:maroon;\">physical_name<\/span><br \/>\n<span style=\"color:blue;\">FROM<\/span>\u00a0\u00a0\u00a0<span style=\"color:maroon;\">sys<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:#ff0080;\"><b>dm_io_virtual_file_stats<\/b><\/span><span style=\"color:maroon;\">(<\/span><span style=\"color:blue;\">NULL<\/span><span style=\"color:silver;\">,<\/span>\u00a0<span style=\"color:blue;\">NULL<\/span><span style=\"color:maroon;\">)<\/span>\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">vfs<\/span><br \/>\n<span style=\"color:blue;\">JOIN<\/span>\u00a0<span style=\"color:maroon;\">sys<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">master_files<\/span>\u00a0<span style=\"color:blue;\">AS<\/span>\u00a0<span style=\"color:maroon;\">mf<\/span><br \/>\n<span style=\"color:blue;\">ON<\/span>\u00a0<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">database_id<\/span>\u00a0<span style=\"color:silver;\">=<\/span>\u00a0<span style=\"color:maroon;\">mf<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">database_id<\/span><br \/>\n<span style=\"color:blue;\">AND<\/span>\u00a0<span style=\"color:maroon;\">vfs<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">FILE_ID<\/span>\u00a0<span style=\"color:silver;\">=<\/span>\u00a0<span style=\"color:maroon;\">mf<\/span><span style=\"color:silver;\">.<\/span><span style=\"color:maroon;\">FILE_ID<\/span><br \/>\n<span style=\"color:blue;\">ORDER<\/span>\u00a0\u00a0<span style=\"color:blue;\">BY<\/span>\u00a0<span style=\"color:maroon;\">avg_total_latency<\/span>\u00a0<span style=\"color:blue;\">DESC<\/span><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Problem Statement: Script to get the virtual file waits for IO waits. Solution:\u00a0Virtual File waits are useful in identifying the[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[23,29],"tags":[75,104,171,187],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/pramodsingla.com\/index.php?rest_route=\/wp\/v2\/posts\/1034"}],"collection":[{"href":"https:\/\/pramodsingla.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pramodsingla.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pramodsingla.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pramodsingla.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1034"}],"version-history":[{"count":0,"href":"https:\/\/pramodsingla.com\/index.php?rest_route=\/wp\/v2\/posts\/1034\/revisions"}],"wp:attachment":[{"href":"https:\/\/pramodsingla.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pramodsingla.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pramodsingla.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}