SQL Server 中的查询存储Query Store是一个有价值的工具,用于通过快速识别由查询计划更改引起的性能降级来解决性能问题。以下示例,当在 SSMS 中执行以下 SQL 语句时,需要 15,579 毫秒才能完成。
使用查询存储器中的“消耗最多资源的查询”功能,我们可以看到具Query ID 23713 和相应的Plan ID 37290 的 SQL 在“计划摘要”窗口中显示。
要从 SQL Server 获取 SQL 文本,可以使用Query ID 手动提取并访问相关的系统表,即 sys.query_store_query 和 sys.query_store_query_text。或者,如果您有一个可以帮助提取 SQL 文本的工具,它可能会显示在下面的屏幕上。该工具接受查询 ID 或部分 SQL 文本来定位查询存储中的特定 SQL 语句进行 SQL 调整。
下面的屏幕显示了该产品如何通过向查询注入一系列提示Hints组合并创建相应的计划指南来提高 SQL 性能。手动完成此过程可能很困难,因为有许多可能的提示组合需要评估。如果没有对 SQL 调整和查询计划的基本理解,识别最佳提示组合可能需要进行大量的试错。
该工具是一款完全自动化的 SQL 调整解决方案,利用查询存储器。在处理过程中,该工具向 SQL 查询中注入了 100 种不同的提示Hints,并识别出了 75 种唯一的查询计划。经过基准测试,发现查询存储器Query store 66 (QS 66) 的性能最佳,处理时间节省了 98.45%。优化后的查询包括以下提示:
OPTION(HASH JOIN, TABLE HINT(employee, INDEX(EMPS_GRADE_INX)))
一旦确定了 SQL 语句的最佳提示,我们可以强制Force Plan将其计划用于 SQL 查询,如下面的屏幕所示。这样一来,下次用户程序执行该 SQL 时,其性能将得到改善,无需对其源代码进行任何修改。
下面的屏幕显示执行相同 SQL 语句在 SSMS 中可以显著提高性能的证据。CPU 时间从 54202 毫秒减少到 391 毫秒,性能提高了 138 倍,而经过的时间从 15579 毫秒减少到 294 毫秒,性能提高了 52 倍。
一种专为查询存储器(Query Store)优化SQL语句而设计的新产品
Tosska DB Ace for SQL Server在这个领域标志着一个重要的飞跃,因为它超越了查询存储器的被动恢复能力,并引入了主动的SQL性能增强。这项开创性技术允许用户从查询存储器(Query Store)中提取SQL并通过在查询存储器中创建新的和改进的查询计划来进行优化。使用Tosska DB Ace,用户可以将这些新计划应用于他们的SQL,而无需修改程序源代码或进行广泛的测试。
Tosska DB Ace Enterprise for SQL Server – Tosska Technologies Limited
DBAS Tune SQL QS – YouTube