在SQL Server 2016中调试与存储过程执行有关的奇怪场景
在我们的组织中,我们在Azure上有SQL Server VM,其始终处于可用性组中,具有2个节点 场景:在SQL Server 2016中调试与存储过程执行有关的奇怪场景,sql,sql-server,stored-procedures,sql-server-2016,query-performance,Sql,Sql Server,Stored Procedures,Sql Server 2016,Query Performance,在我们的组织中,我们在Azure上有SQL Server VM,其始终处于可用性组中,具有2个节点 场景: 我们有一个称为“SP_xyz”的过程,它包含一个select查询,很少有内部联接来获取凭证持有者列表。加载一段时间后,该存储过程(SP)开始运行缓慢,因此我们对其进行了优化,并将该SP重新投入生产,并且在一段时间内运行良好 几个月后,随着负载增加,该SP再次出现缓慢问题,我们再次分析了该SP并进行了优化。现在谜团来了,只是为了交叉验证新优化的SP,我们在生产中使用_test创建了相同的SP
我们是否遗漏了任何内容,以前是否有人遇到过此问题?我认为根据您提供的详细信息,不清楚。但由于您使用的是sqlserver 2016。。可以使用querystore随时间跟踪语句或存储过程的执行 随着时间的推移,一个查询可能会有不同的计划,一个计划可能会执行得更好,而另一个计划可能不会。因此,当您启用查询存储时,您可以在“回归查询”部分中看到随时间推移的所有计划更改,这可以帮助您分析为什么一个计划比另一个计划花费更多的时间。至少这是一个起点 下面是一个查询,其中包含不同的计划(点表示一段时间内的新计划)和图形上绘制的位置表示所用的时间
我认为您提供的详细信息并不清楚。但由于您使用的是sqlserver 2016。。可以使用querystore随时间跟踪语句或存储过程的执行 随着时间的推移,一个查询可能会有不同的计划,一个计划可能会执行得更好,而另一个计划可能不会。因此,当您启用查询存储时,您可以在“回归查询”部分中看到随时间推移的所有计划更改,这可以帮助您分析为什么一个计划比另一个计划花费更多的时间。至少这是一个起点 下面是一个查询,其中包含不同的计划(点表示一段时间内的新计划)和图形上绘制的位置表示所用的时间
不确定你是否得到了答案 我想这是典型的执行计划过时的情况,因为您的过程是动态的 尝试
重新编译选项
CREATE PROCEDURE SP_xyz
WITH RECOMPILE
AS
BEGIN
.......
END
GO
不确定你是否得到了答案
我想这是典型的执行计划过时的情况,因为您的过程是动态的
尝试重新编译选项
CREATE PROCEDURE SP_xyz
WITH RECOMPILE
AS
BEGIN
.......
END
GO
事实上,这不是我想要的。这是sql server中存储过程的基本情况。我的问题是,在不改变任何东西的情况下,如何在同一个db服务器上运行具有不同名称的优化Sp,Sp就可以开始更快地运行。我认为参数嗅探可能是一个问题here@TT--如果标题没有摘要,则表示抱歉。我把标题放在我能想到的地方。我将尝试为不同的参数集修改它的发生情况…这实际上不是我想要的。这是sql server中存储过程的基本情况。我的问题是,在不改变任何东西的情况下,如何在同一个db服务器上运行具有不同名称的优化Sp,Sp就可以开始更快地运行。我认为参数嗅探可能是一个问题here@TT--如果标题没有摘要,则表示抱歉。我把标题放在我能想到的地方。我将尝试为不同的参数集修改它的发生情况……这将有助于确定前后的查询计划。但是在生产中,我们没有启用查询存储来捕获计划。所以我们没有数据可以核实。但在此之前,是什么导致更改查询计划是我的基本问题?查询计划更改可能是由于多种原因造成的..统计信息过期/统计信息重新编译,表更改..重新编译提示..我所知不多,但所有这些事情都在服务器上定期发生,而此SP运行缓慢。我们用不同的名称测试了优化的sp(_test),这有助于识别前后的查询计划。但是在生产中,我们没有启用查询存储来捕获计划。所以我们没有数据可以核实。但在此之前,是什么导致更改查询计划是我的基本问题?查询计划更改可能是由于多种原因造成的..统计信息过期/统计信息重新编译,表更改..重新编译提示..我所知不多,但所有这些事情都在服务器上定期发生,而此SP运行缓慢。我们用不同的名称测试了优化的sp(_test),移动速度变快了。我们尝试了此选项,但没有成功。无论如何,即使它有效,我们如何确保在生产中需要定期重新编译多少SP。而且,这也不可行。因为我们不能在所有运行缓慢的SP中使用此选项,因为存储过程在性能方面的整体理念受到了影响。我们尝试了此选项,但没有成功。无论如何,即使我们如何确保在生产中