社区
应用实例
帖子详情
紧急救命!问什么索引会搞到死锁,严重超时!
HarryZhang
2005-01-20 09:31:21
紧急救命!问什么索引会搞到死锁,严重超时!
我现在在一个每天都会储存5G数据的表里设置了主键,
可是现在数据量超过50万条、容量超过50G的表里插入数据很慢,
甚至会死锁,死锁上面写的是索引死锁,如果删除索引可能会没问题,
但是查询又会很慢,索引是建立在不需要更改的字段上,请问这是为什么?
另外在一个日志表里也出现这样的问题,但那个日志标只有11万条记录,
只要建立索引,操作一两天就会产生死锁,请高手们帮忙解答,谢谢!!
...全文
328
14
打赏
收藏
紧急救命!问什么索引会搞到死锁,严重超时!
紧急救命!问什么索引会搞到死锁,严重超时! 我现在在一个每天都会储存5G数据的表里设置了主键, 可是现在数据量超过50万条、容量超过50G的表里插入数据很慢, 甚至会死锁,死锁上面写的是索引死锁,如果删除索引可能会没问题, 但是查询又会很慢,索引是建立在不需要更改的字段上,请问这是为什么? 另外在一个日志表里也出现这样的问题,但那个日志标只有11万条记录, 只要建立索引,操作一两天就会产生死锁,请高手们帮忙解答,谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
seven
2005-05-12
打赏
举报
回复
mark
rouqu
2005-01-20
打赏
举报
回复
1.Turn Off HyperThreading
2.MAXDOP = 1
3.Checktable('tablename')
4.sp_lock
zjcxc
2005-01-20
打赏
举报
回复
索引只是引起死锁的原因之一,还有其他很多情况也会引起死锁,所以你还要检查其他处理语句
HarryZhang
2005-01-20
打赏
举报
回复
另外我还有一个表只是用了一个普通的索引,都会一两天之后产生死锁,不知道为什么,只有11万条数据,就会死掉,很奇怪,我的是双p4 2.8 xeon 2G ram 磁盘阵列1.5T
HarryZhang
2005-01-20
打赏
举报
回复
但是我之前都取消了聚集索引,只是用普通索引
zjcxc
2005-01-20
打赏
举报
回复
所以我上面建议你取消聚集索引,设置填充因子为0
另外,删除聚集索引会导致其他索引重建,重建索引需要对表中的数据重建立索引结果,所以重建索引慢是正常的
zjcxc
2005-01-20
打赏
举报
回复
表结构不太重要.
创建主键,默认情况下会加上聚集索引,聚集索引会在数据变化时,调整记录的存放位置,如果你的主键设置在顺序容易受数据变化的字段上,那势必在数据变化时,导致sql经常移动记录的位置来适应这种变化,引起大量的i/o操作,严重影响效率,最终导致死锁
而填充因子是另一个影响数据处理效率的因素,填充因子决定每个索引页的保留空间大小,如果这个值设置得很大,则保留空间很小,数据变化引起索引变化时,如果没有保留空间,则sql要重新调整索引页,对索引页进行拆分,如果保留空间太小,则这种处理是经常的,也严重影响处理效率
所以我上面建议你取消聚集索引,设置填充因子为
HarryZhang
2005-01-20
打赏
举报
回复
我给你看看表的结构
create table page_table(pageid int,archno varchar(30), pageno int, pageimage image,opdate char(10),optime char(8))
然后在pageid字段建立主建,archno和pageno建立唯一索引,但是当数据量去到50万,容量去到50G就死了,然后要更改索引,但是也是很慢
lys1706228
2005-01-20
打赏
举报
回复
学习
rouqu
2005-01-20
打赏
举报
回复
填充因子 (BOL)
========
在创建聚集索引时,表中的数据按照索引列中的值的顺序存储在数据库的数据页中。在表中插入新的数据行或更改索引列中的值时,Microsoft® SQL Server™ 2000 可能必须重新组织表中的数据存储,以便为新行腾出空间,保持数据的有序存储。这同样适用于非聚集索引。添加或更改数据时,SQL Server 可能不得不重新组织非聚集索引页中的数据存储。向一个已满的索引页添加某个新行时,SQL Server 把大约一半的行移到新页中以便为新行腾出空间。这种重组称为页拆分。页拆分会降低性能并使表中的数据存储产生碎片
将该值设置为0将保证最大的Performance.
更新操作频繁的表不考虑cluster index.
zjcxc
2005-01-20
打赏
举报
回复
将聚集索引改为非聚集索引,将索引的填充因子设置为0
子陌红尘
2005-01-20
打赏
举报
回复
是怎样定义主键的?
pbsql
2005-01-20
打赏
举报
回复
不要在顺序经常变动的字段上建聚集索引
估计是有聚集索引,你把聚集索引去掉看看
WangZWang
2005-01-20
打赏
举报
回复
建立索引会使查询速度加快,同时影响了更新的速度.
所以要合理的建立索引,使在查询和更新两者间考虑
平衡.
由你上面分析,可能是由于建立了不适合的索引,每次
更新都要进行大量的移动,使得处理进入堵塞导致死锁.
要解决问题要从分析数据库的设计及程序调用上来
分析,我们只能给点意见.
JVM性能调优面试必
问
OOM和CPU100%和
死锁
排查实战原理分析
本节课通过两个方面系统性的给大家分享JVM的生产
问
题排查实战。 第一章节,介绍OOM异常的原因,分析方法论... 第二章节,介绍CPU100%
问
题产生的原因,实战CPU100%,分析堆栈,以及
死锁
的
问
题,定位
问
题,解决
问
题等等。
SQLServer
索引
引起大量
超时
和
死锁
!
但是数据库跟踪到大量
死锁
和
超时
的语句。
超时
的语句单独执行时也挺快,估计是
死锁
太多也导致了其他查询
超时
。该用户之前还正常,不知道今天是不是有类似开业的的情形,今天出现很多
死锁
超时
。当然我们是按用户数据...
mysql 唯一
索引
死锁
_MySQL
死锁
案例_唯一
索引
近期在MySQL数据库中产生了
死锁
的情况,与通常的
死锁
不同,由于表中有唯一
索引
,所以加锁方式也比较有趣,本文将对于该例进行阐述(本文将对数据进行脱敏操作):
问
题描述:隔离级别:READ-COMMITTED表结构:show ...
MySQL添加
索引
导致表
死锁
问
题
出现该
问
题描述:由于SQL慢,希望通过
索引
优化,发现很多单字段
索引
、且组合
索引
缺少一些关键字段,便决定删除单字段
索引
,补全组合
索引
。修改完
索引
后提交,发现执行时间几个小时都没有执行完成。 造成结果:测试...
唯一
索引
并发更新导致的
死锁
问
题
唯一
索引
更新导致
死锁
问
题
应用实例
27,579
社区成员
68,558
社区内容
发帖
与我相关
我的任务
应用实例
MS-SQL Server 应用实例
复制链接
扫一扫
分享
社区描述
MS-SQL Server 应用实例
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章