聚集索引引起数据库很容易死锁

数据库很容易死锁,我后来发现是聚集索引引起的,索引填充因子是90,后来把聚集索引去掉,问题就解决了,但是有些人不明白聚集索引为什么会引起死锁??


首先,填充因子设置得不对。

聚集索引代表了表中记录的存储顺序,所以每次数据的变化,都可能导致表中的数据按照聚集索引重新调整顺序

而填充因子设置为90,这是偏向于减少索引空间占用的做法,这样的做法导致为了减少索引的空间占用,使数据页的空闲空间很小
在向一个已满的索引页添加某个新行时,SQL Server 把大约一半的行移到新页中以便为新行腾出空间。这种重组称为页拆分。页拆分会降低性能并使表中的数据存储产生碎片
因为你这样的填充因子设置,导致数据页空闲空间很小,所以页拆分经常发生,这样数据处理性能低,当然就很容易锁表了


删除聚集索引后,不存在调整数据顺序的问题,也就不产生页拆分的问题,因此就解决了死锁的问题.


正确的填充因子应该是偏小,保持默认的0或者10这样的较小值,这样产生的结果是索引占用的空间大,但因为数据页的空闲多,所以页拆分的机率小,也就在很大程度上避免了死锁
同时,在查询处理上,如果经常在聚集索引列上做条件查询,这样的效率是很高的


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值