Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server:查询性能利润计算_Sql Server_Performance_Controlling - Fatal编程技术网

Sql server SQL Server:查询性能利润计算

Sql server SQL Server:查询性能利润计算,sql-server,performance,controlling,Sql Server,Performance,Controlling,最近,我通过添加一个索引调整了一些查询,现在正在尝试评估该表的总体情况是否有所改善 我从sys.dm\u db\u index\u usage\u stats中捕获了一些指标。第一个图表显示了该特定新索引的总体用户搜索(扫描、查找和用户更新(写入))数量之间的差异。第二个图表只是从该索引上的所有读数中减去用户更新。单看这些数字,我就可以清楚地看到,索引更多地是写出来的,而不是实际读取出来的 然而,该索引特别有助于每分钟24/7对服务器进行两次监视查询。在我添加这个索引之前,这些查询进行了聚集索引

最近,我通过添加一个索引调整了一些查询,现在正在尝试评估该表的总体情况是否有所改善

我从sys.dm\u db\u index\u usage\u stats中捕获了一些指标。第一个图表显示了该特定新索引的总体
用户搜索
(扫描、查找和用户更新(写入))数量之间的差异。第二个图表只是从该索引上的所有读数中减去
用户更新。单看这些数字,我就可以清楚地看到,索引更多地是写出来的,而不是实际读取出来的

然而,该索引特别有助于每分钟24/7对服务器进行两次监视查询。在我添加这个索引之前,这些查询进行了聚集索引扫描。通过查看聚集索引的指标,我可以清楚地看到,以与新索引相同的速率丢弃的扫描数现在被搜索(每6小时窗口720次搜索,因此每天2.880次搜索(或以前的聚集索引扫描)

感谢您耐心阅读所有这些…现在我的问题。我如何才能计算写入新索引的MB数量。我想在IO(以MB为单位)与所有表扫描以及随后查找和维护新索引的IO之间进行比较

这就是我做的计算:

Read IO Table Scan             79.977 Reads / 128 = 765,45 MB

-Read IO Index Seek                15 Reads / 128 = 0,12 MB

= Read IO Savings per query    765,33 MB

Read IO savings per day        765,33 MB * 2.880 = 2.152 GB
-每天写入新索引26.000次写入*49字节每行写入=1.274.000字节

Overall benefit per day          2.152 - 754.000/(1024^3) = 2.152 - 0,0011= 2.151,99 ?????
由于我在查询调优期间收集了这些信息,因此我在读取IO上的节省非常简单。但是,我如何计算(或进行有根据的猜测)在该索引上写入的IO开销?我知道我每天大约进行26000次写入。该索引具有以下结构:

[2 KEYS] column1 {datetime 8}, column2 {datetime 8} [3 INCLUDES] column3 {bit 1}, column4 {bigint 8}, column5 {int 4} [SECRET COLUMNS (Clustered Key)] [3 KEYS] column6 {bigint 8}, column7 {bigint 8}, column8{int 4} [2键]column1{datetime 8},column2{datetime 8}[3包括]column3{bit 1},column4{bigint 8},column5{int 4}[秘密列(聚集键)][3键]column6{bigint 8},column7{bigint 8},column8{int 4} 所以我猜叶级记录有49个字节(所有这些数字的总和)。是吗?我怎么能猜到中间级呢

不管怎样…(更多关于“有根据的猜测”的方向)在你的经验中,这真的很重要吗?因为我不用扫描桌子,也不用经常这样做

非常感谢您阅读并与我分享您对查询调优利润计算的见解


查看dmv sys.dm_db_index_operation_stats,它将提供有关SQL Server为完成查询/更新而必须移动和读取的页面数的信息。这可以更好地查看实际IO。另外,请仔细查看等待列,它将让您知道索引维护是否给其他用户造成问题呃询问