参数嗅探导致缓慢案例

日期: 2017-02-22

症状:

  1. 反馈网站登录超时缓慢;
  2. 用活动监视器和 Proc_DBA_GetSlowSQL_ByCPU 都可以看到这条SQL占用了比较多的CPU时间;
  3. 每隔一段时间(时间不定,一个月或几个月)可能就出现一次,重启SQL Server会恢复正常(如是存储过程加个空格修改一下也能恢复正常);
  4. 实际在 SSMS 上执行很快。 

专业上的说法叫:参数嗅探
这种其实出现的机率非常少, 几年也许就能碰到一次, 加上重编译就好。 没有办法根治这种现象。
但有经验了只要出现类似的症状, 基本在 20 分钟内就可以恢复。(只要发现有上面的症状,99.9%的可能就是参数嗅探了)

不能每个语句加重编译, 代价很高。
处理方法相当于一个老年人迷路了回家困难(机率很小), 强行让他在胸前挂块地图就好。但强行在每个人胸前挂地图就不值了。

处理方法(红色部分为重编译,加上就解决了):

存储过程 SQL语句

CREATE PROC dbo.Proc_test
--parameters
WITH RECOMPILE
AS
BEGIN
---to do list
END

SELECT * FROM tableName 
OPTION(RECOMPILE)

参考文档:

笔记51-徐 参数嗅探 Parameter Sniffing

实际SQL:略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值