聚集索引引起数据库很容易死锁
来源:互联网 发布:ps4 网络设置 编辑:程序博客网 时间:2024/05/20 11:52
数据库很容易死锁,我后来发现是聚集索引引起的,索引填充因子是90,后来把聚集索引去掉,问题就解决了,但是有些人不明白聚集索引为什么会引起死锁??
首先,填充因子设置得不对。
聚集索引代表了表中记录的存储顺序,所以每次数据的变化,都可能导致表中的数据按照聚集索引重新调整顺序
而填充因子设置为90,这是偏向于减少索引空间占用的做法,这样的做法导致为了减少索引的空间占用,使数据页的空闲空间很小
在向一个已满的索引页添加某个新行时,SQL Server 把大约一半的行移到新页中以便为新行腾出空间。这种重组称为页拆分。页拆分会降低性能并使表中的数据存储产生碎片
因为你这样的填充因子设置,导致数据页空闲空间很小,所以页拆分经常发生,这样数据处理性能低,当然就很容易锁表了
删除聚集索引后,不存在调整数据顺序的问题,也就不产生页拆分的问题,因此就解决了死锁的问题.
正确的填充因子应该是偏小,保持默认的0或者10这样的较小值,这样产生的结果是索引占用的空间大,但因为数据页的空闲多,所以页拆分的机率小,也就在很大程度上避免了死锁
同时,在查询处理上,如果经常在聚集索引列上做条件查询,这样的效率是很高的
- 聚集索引引起数据库很容易死锁
- 数据库聚集索引和非聚集索引
- Oracle外键不加索引引起死锁
- 多线程引起多事务导致索引争用引起数据库死锁
- 数据库索引 - 【聚集索引和非聚集索引】
- 数据库-索引 (聚集索引和非聚集索引)
- 数据库聚集索引资料整理
- sql数据库聚集索引和非聚集索引示例
- 数据库:关于聚集索引和非聚集索引(整理)
- 数据库优化-- 聚集索引和非聚集索引
- 数据库中聚集索引和非聚集索引区别
- 数据库中的聚集索引和非聚集索引
- 【数据库】——聚集索引和非聚集索引
- SQLServer 索引引起大量超时和死锁!
- Oracle外键不加索引会引起死锁问题
- mysql死锁-非主键索引更新引起的死锁
- SQL SERVER中聚集索引引起插入慢
- SQL SERVER下非聚集索引引发的死锁问题
- 初学者javascript建议
- Ubuntu中/etc/apt/sources.list.d目录的作用(以Ubuntu12.04为例)
- jq.extgrid.js
- 总结的方法
- SO_LINGER选项有何作用?
- 聚集索引引起数据库很容易死锁
- linux网络命令及工具(修改链接速度、双工、查看带宽使用情况)
- 硬盘加密:如何给移动硬盘加密
- 批处理命令之Start的详细用法\批处理打开IE窗口最大化
- CUnit在Linux下安装配置
- 1016. Phone Bills (25)-PAT
- 学习笔记----素数筛
- nginx backdoor
- 修改extjs源码真正解决:ExtJs4.0 GridPanel 数据内容不能选中复制。