当前位置: 首页 > 数据分析师 > 数据分析师实战技能 > 数据分析师数据分析 > 利用解决大数据查找死锁问题索引的三种方法

利用解决大数据查找死锁问题索引的三种方法

发布时间:2020年09月29日 02:07:13 来源: 点击量:546

【摘要】利用解决大数据查找死锁问题索引的三种方法一、主题描述先看看问题描述:当机房人数达到上限时,评教过程中就遇到了无法提交的情况。遇到问

利用解决大数据查找死锁问题索引的三种方法

一、主题描述

先看看问题描述:当机房人数达到上限时,评教过程中就遇到了无法提交的情况。遇到问题后大家第一时间发现了是由于死锁造成的。

再来看出现这个问题的原因:这次造成死锁的原因是:使用SqlServer的时候发现在高并发情况下,频繁更新和频繁查询引发死锁。

好吧,原文章说在被频繁操作的那张表上的存储过程中添加非聚集索引就OK了,到底什么是非聚集索引?为什么添加它就能解决?下面就为大家补充一下。

二、聚集/非聚集索引介绍

既然有非聚集索引,就一定有聚集的,接着我们来看看它们都是什么。

聚集索引:索引中键值的逻辑顺序决定了表中相应行的物理顺序。就像我们写文档,文档的目录决定了具体内容的顺序。

由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像文档可以按内容标题和重要性进行组织编排一样。

根据聚集索引的这个特点,我们就可以分析出,它在查询范围值的时候效率比较高。例如,我们要查按日期排列的一组数据,利用聚集索引就可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。

非聚集索引:索引中键值的逻辑顺序不同于表中相应行的物理顺序。

索引是通过二叉树的数据结构来描述的,我们可以这么理解聚集索引:索引的叶节点就是数据节点。而非集索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。稍微接触过数据结构的同学应该很容易就能理解。 

非聚集索引很像我们按照部首查字典,字典编排是按照拼音顺序的,但我们仍可以用部首进行定位查询。

三、问题解决与应用

下面这幅图片介绍了我们应该什么时候用什么类型的索引。

在聚集索引被使用时,每次数据的变化,都可能导致表中的数据按照聚集索引重新调整顺序。这样也就合理的解释了上边“在大批量数据、高并发的情况下频繁更新和查询”引起的死锁问题。 

去掉聚集索引、改成非聚集索引或修改索引填充因子这三种方法理论上都能解决上述问题,只是推测,笔者并没有测试。

四、小结

类似数据库中的知识还有许多不为我们所知,在项目中遇到的新问题后要知其然,知其所以然,这样才能获得宝贵的项目经验。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部