多表delete时,造成表死锁

菜园里的番茄 2015-11-26 02:01:34
在对A、B表进行关联删除时,sql语句delete A from A、B where A.name=B.name and A.rectime=B.rectime;在数据量少时执行没一点问题,当数据量大时就对数据表A造成了死锁。请问各路大神,这是什么问题?
...全文
418 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜园里的番茄 2015-11-27
  • 打赏
  • 举报
回复
这个已经加啦,初步分析可能是MySQL本身的问题,当delete一千条左右数据时就特别慢,基本上是1s一条
等不到来世 2015-11-26
  • 打赏
  • 举报
回复

--name,rectime上加索引;用临时表暂存要删的id。
select A.id into #t
from  A with(nolock),B with(nolock)
where A.name=B.name and A.rectime=B.rectime;

delete A
from #t
where A.id=#t.id
Yole 2015-11-26
  • 打赏
  • 举报
回复
那就只能分段delete了~~~
菜园里的番茄 2015-11-26
  • 打赏
  • 举报
回复
报死锁,除了delete没有其他的操作。
Yole 2015-11-26
  • 打赏
  • 举报
回复
对A、B表还有别的操作么? 是报死锁错误么?还是一直在等待?

22,209

社区成员

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

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