Ang*_*ker 4 sql sql-server performance stored-procedures sql-server-2005
我有以下问题:当从我的应用程序中调用存储过程时,不时(如1000次调用中的1次),需要10-30秒才能完成.通常,sproc在一秒钟内运行.这是一个相当简单的proc,只有一个选择将几个表连接在一起.所有表名都设置了一个(NOLOCK)提示,因此可能没有锁定.索引也都到位,否则它会一直很慢.
问题是我无法在SSMS中复制这个问题(因为它总是在亚秒运行),无论它运行多少次sproc,但是当我将探查器指向正在运行我的应用程序的用户时,我看到了问题.SSMS中的查询计划似乎是正确的,但问题仍然存在.
我从哪里开始?我该如何调试此问题?
一些选择:
探究者或SET STATISTICS xx ON说什么?CPU说,是否只是资源匮乏?
引擎决定统计数据已过期.表格是否按行数改变10%(经验法则).去测试:
SELECT
name AS stats_name,
STATS_DATE(object_id, stats_id) AS statistics_update_date
FROM
sys.stats
WHERE
object_id IN (OBJECT_ID('relevanttable1'), OBJECT_ID('relevanttable2'))
Run Code Online (Sandbox Code Playgroud)服务器上还发生了什么?示例:索引重建:不阻塞,只是资源密集型.
通常我建议参数嗅探,但你说每个调用的参数都是相同的.我也期望它更频繁地发生.
| 归档时间: |
|
| 查看次数: |
1794 次 |
| 最近记录: |