同一语句CPU占用波动大的问题

iAaronHua 2018-12-23 11:41:50
在查一个系统慢的问题,跟踪所有执行的语句,发现一个奇怪的现象,一个条语句,不同时间执行,CPU占用差距很大,但reads是相近甚至是一样的,百思不得其解,请大神解惑。一般都是几十毫秒,但有时会执行几秒,差距很大。下图duration单位为秒
...全文
727 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-01-08
  • 打赏
  • 举报
回复
引用 4 楼 iAaronHua 的回复:
[quote=引用 2 楼 吉普赛的歌 的回复:] 生产环境不是你本机, 数据库是动态的, 时刻都有很多SQL在运行,而且许多可能存在冲突(锁、阻塞)及资源(CPU、内存、IO)紧张,平时很快的,偶尔等几秒很正常。 只有一直慢的,才是你需要关注的。 另外, 你这个语句用到了参数。 不同的参数, 返回的记录数不可能一致吧? 你可以查一下参数对应记录具体的分布情况。
返回数据最终都只有一条,一模一样的语句,甚至是参数都一模一样,有时候会卡10多秒,应该不是数据分布的问题,而且涉及的表数据量都不大,就万把条数据[/quote] 很可能是阻塞, 你贴出实际的sql语句出来再说吧。 敏感的表名,列名, 可以用 t1,t2, c1, c2 等代替
iAaronHua 2019-01-08
  • 打赏
  • 举报
回复
引用 2 楼 吉普赛的歌 的回复:
生产环境不是你本机, 数据库是动态的, 时刻都有很多SQL在运行,而且许多可能存在冲突(锁、阻塞)及资源(CPU、内存、IO)紧张,平时很快的,偶尔等几秒很正常。 只有一直慢的,才是你需要关注的。 另外, 你这个语句用到了参数。 不同的参数, 返回的记录数不可能一致吧? 你可以查一下参数对应记录具体的分布情况。
返回数据最终都只有一条,一模一样的语句,甚至是参数都一模一样,有时候会卡10多秒,应该不是数据分布的问题,而且涉及的表数据量都不大,就万把条数据
iAaronHua 2019-01-08
  • 打赏
  • 举报
回复
这个问题出现很诡异,主要是导致用户体验很差,卡个一两秒还好,有时卡个十多秒。如果一直慢反而问题就明显了,就好解决了。关键是跟踪此语句执行周期内的所有语句,没发现有锁表的操作,所以可以排除锁表导致问题。CPU也可以排除,整体使用率都不高。内存现在不确定,有很多空余内存,不过SQLSERVER占的内存有点高,不知道有没有可能是缓存命中或清理引起的,不知道有没有什么办法跟踪分析。IO设备暂时也不确定,因为是偶发性的,不知道有没有什么办法跟踪分析。 各位大神有没有好方法,不吝赐教
吉普赛的歌 2019-01-02
  • 打赏
  • 举报
回复
生产环境不是你本机, 数据库是动态的, 时刻都有很多SQL在运行,而且许多可能存在冲突(锁、阻塞)及资源(CPU、内存、IO)紧张,平时很快的,偶尔等几秒很正常。
只有一直慢的,才是你需要关注的。

另外, 你这个语句用到了参数。
不同的参数, 返回的记录数不可能一致吧?

你可以查一下参数对应记录具体的分布情况。
丰云 2019-01-02
  • 打赏
  • 举报
回复
资源冲突呗。 你这个查询语句相关的表或其他集合或相关的资源,可能被别的线程锁定阻塞,导致你的这波查询延时等待很久,这种事很正常

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧