gpt4 book ai didi

sql-server - SQL 服务器 : Query Performance Profit Calculation

转载 作者:行者123 更新时间:2023-12-03 23:30:03 26 4
gpt4 key购买 nike

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

我从 sys.dm_db_index_usage_stats 中获取了一些指标。 第一个图表 显示了该特定新索引的总体 user_seeks(扫描、查找和 user_updates(写入))之间的差异。 第二个图表只是从该索引的所有读取中减去 user_updates。单看这些数字,我就可以清楚地看到,写入索引的次数多于实际读取的次数。

但是,该索引特别有助于 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 开销?我知道我每天大约进行 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 个字节(所有数字的总和)。有吗?我怎么猜中级?

无论如何...(更多关于“有根据的猜测”的方向)根据您的经验,这真的很重要,因为我无论如何都可以避免扫描表格并以常规方式执行此操作?

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

Index Performance

最佳答案

查看 dmv sys.dm_db_index_operational_stats,它将提供有关 SQL Server 必须移动和读取多少页才能完成查询/更新的信息。这样可以更好地了解实际 IO。还要仔细查看 Waits 上的列,它会让您知道索引维护是否导致其他查询出现问题。

关于sql-server - SQL 服务器 : Query Performance Profit Calculation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40675595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com