ksp*_*rin 5 sql-server azure azure-sql-database
我有一个 Azure SQL 生产数据库,平均 DTU 使用率约为 10-20%,但是,我有时会遇到 DTU 峰值,使其达到 100% 以上。以下是过去 1 小时的示例:
我意识到这可能是一个恶意查询,因此我切换到“查询性能洞察”选项卡,我发现过去 24 小时内的以下内容:
该图表对于 CPU 使用率线很有意义。查询3780占用了大部分 CPU,正如我的应用程序所预期的那样。总体DTU(红色)线似乎正确遵循这一点(减去尖峰)。
然而,在DTU 组件图表中,我可以看到出现的大量数据 IO峰值与整体 DTU峰值一致。切换到Data IO 的 TOP 5 查询,我看到以下内容:
这似乎表明不存在使用大量数据 IO的查询。
我如何找出此数据 IO使用量来自何处?
最后,我看到“odd ball”查询 ( 7966 ) 列在Data IO 的前 5 个查询下,仅执行了 5 次。选择它会显示以下内容:
SELECT StatMan([SC0], [SC1], [SC2], [SB0000])
FROM (SELECT TOP 100 PERCENT [SC0], [SC1], [SC2], step_direction([SC0]) over (order by NULL) AS [SB0000]
FROM (SELECT [UserId] AS [SC0], [Type] AS [SC1], [Id] AS [SC2] FROM [dbo].[Cipher] TABLESAMPLE SYSTEM (1.828756e+000 PERCENT)
WITH (READUNCOMMITTED) ) AS _MS_UPDSTATS_TBL_HELPER
ORDER BY [SC0], [SC1], [SC2], [SB0000] ) AS _MS_UPDSTATS_TBL
OPTION (MAXDOP 16)
Run Code Online (Sandbox Code Playgroud)
这个查询是什么?
这看起来不像我的应用程序创建/使用的任何查询。详细信息图表上的时间戳似乎与总体数据 IO 峰值(就在早上 6 点之前)的大致时间一致,这让我认为这个查询与所有这些都有关。
我可以使用其他工具来帮助隔离此问题吗?
查询正在更新统计信息..当此设置AUTO UPDATE STATISTICS 打开时会发生这种情况..应保持此设置并且您无法将其关闭..这是最佳实践..
仅当您发现查询执行不佳且该查询的统计信息已关闭时,才应手动更新统计信息。
\n\n下面还列出了 SQL 自动为您更新统计信息的一些规则
\n\n\xe2\x80\x98change\xe2\x80\x99 是指插入、更新或删除行。所以,是的,即使是自动创建的统计信息也会随着数据的变化而更新和维护。在最近的版本中,这些规则发生了一些变化,sql 可以更频繁地更新统计信息
\n\n参考文献:
\n https://www.sqlskills.com/blogs/erin/understanding-when-statistics-will-automatically-update/
| 归档时间: |
|
| 查看次数: |
9027 次 |
| 最近记录: |