sql - SQL Server - 单个表上的多个插入导致死锁
问题描述
愿意了解由于多个插入语句而在具有 1 个聚集索引和 1 个非聚集索引的表中发生死锁的情况。
解决方案很奇怪,将 whereignoreDuplicateKey
设置为 False,从而解决了问题。这是TRUE
错误的,当它是真的时发生了死锁。我读了很多关于索引和锁定的内容,插入可能会导致锁定,但是这个属性是如何解决问题的呢?
场景 - 1 个表,5 个线程并行尝试使用 Spring 批处理(5 个多个分区)插入,1000 是提交间隔。2 个索引 - 1 个主键唯一聚集索引,1 个非聚集唯一索引(带IgnoreDuplicateKey=True
)。
桌子上没有触发器。
由于死锁,约 150 次插入失败了 40000 次。死锁失败的数量随着数量的增加而增加。
解决方案
推荐阅读
- ms-media-foundation - 是否可以使用 Microsoft Windows Media Foundation 创建/编码可变帧率视频文件?
- javascript - 使用 Angular 通过 post 将文件上传/发送到 django REST
- r - 导入多个 .dta 文件,删除标记为 fomat 的 Haven,从 R 中所有导入的 dta 文件创建数据框
- excel - 更改以数组值开头的换行符的字体大小?
- python - 如何根据python中的条件旋转和创建列
- python - 如何使用 python-telegram-bot 获取用户类型
- adobe - 增量数据提取 Adobe AEM 查询构建器
- java - 如何在导航抽屉中添加活动
- assembly - MASM x86 , ret 返回错误的地址
- next.js - 在 Next.js Hot Reload 发生之前是否有一个钩子?