加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何判断为什么某个表上的插入很慢?

发布时间:2020-12-25 06:21:24 所属栏目:MsSql教程 来源:网络整理
导读:我知道SQL表上的INSERT可能因任何原因而变慢: 表上存在INSERT TRIGGER 许多必须检查的强制约束(通常是外键) 在表的中间插入行时,页面在聚簇索引中拆分 更新所有相关的非聚集索引 阻止桌面上的其他活动 IO写入响应时间不佳 ……我错过了什么? 我怎么知道

我知道SQL表上的INSERT可能因任何原因而变慢:

>表上存在INSERT TRIGGER
>许多必须检查的强制约束(通常是外键)
>在表的中间插入行时,页面在聚簇索引中拆分
>更新所有相关的非聚集索引
>阻止桌面上的其他活动
> IO写入响应时间不佳
> ……我错过了什么?

我怎么知道在我的具体情况中哪个是负责任的?如何衡量页面拆分与非聚集索引更新对其他所有内容的影响?

我有一个存储过程,一次插入大约10,000行(来自临时表),每10k行大约需要90秒.这是令人无法接受的缓慢,因为它导致其他spid超时.

我查看了执行计划,我看到了INSERT CLUSTERED INDEX任务以及FK查找中的所有INDEX SEEKS,但它仍然没有告诉我为什么它需要这么长时间.没有触发器,但表中确实有一些FKeys(看起来是正确索引的).

这是一个SQL 2000数据库.

解决方法

你可以看一些东西……

将批量大小从10000减小到更小,如2000或1000(您没有说明行大小有多大).

尝试启用IO Stats以查看FK查找正在进行多少IO.

什么是插入时发生的等待(master.dbo.sysprocesses)?

让我们从这里开始,看看我们去哪里.

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读