我最近通过添加一个索引来调整一些查询,并且现在正试图在该表的整体情况变得更好的情况下进行查询。SQL Server:查询性能利润计算
我从sys.dm_db_index_usage_stats
抓获了一些指标。所述第一图表显示之间的差整体user_seeks
(扫描,查找和user_updates(写入)),选择那些特定的新索引的数量。所述第二图表简单地减去user_updates
从所有的读取该索引。单看这些数字,我可以清楚地看到,索引更多地写入,而不是实际读取。
然而,该指数特别是帮助两个监控查询击中服务器每分钟24/7。在添加此索引之前,这些查询进行了聚簇索引扫描。通过查看聚集索引的度量标准,我可以清楚地看到,新索引现在获取的扫描次数以相同速率下降(720每6小时查找一次,因此每天有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开销?我知道我每天要做大约26,000次写作。该索引具有以下结构:
[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}
所以我猜叶级别记录有49个字节(总结所有数字)。有吗?我怎么能猜中间水平?
无论如何...(更多关于“受过教育的猜测”的方向)在你的经历中是否真的很重要,因为我无论如何都无法保存我的扫描表并以常规方式进行此操作?
非常感谢您阅读我的见解并与您分享您的见解调整利润计算。