熱線電話:13121318867

登錄
首頁精彩閱讀利用解決大數據查找死鎖問題索引的三種方法
利用解決大數據查找死鎖問題索引的三種方法
2017-11-19
收藏

利用解決大數據查找死鎖問題索引的三種方法

一、主題描述

先看看問題描述:當機房人數達到上限時,評教過程中就遇到了無法提交的情況。遇到問題后大家第一時間發現了是由于死鎖造成的。

再來看出現這個問題的原因:這次造成死鎖的原因是:使用SqlServer的時候發現在高并發情況下,頻繁更新和頻繁查詢引發死鎖。

好吧,原文章說在被頻繁操作的那張表上的存儲過程中添加非聚集索引就OK了,到底什么是非聚集索引?為什么添加它就能解決?下面就為大家補充一下。

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

既然有非聚集索引,就一定有聚集的,接著我們來看看它們都是什么。

聚集索引索引中鍵值的邏輯順序決定了表中相應行的物理順序。就像我們寫文檔,文檔的目錄決定了具體內容的順序。

由于聚集索引規定數據在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像文檔可以按內容標題和重要性進行組織編排一樣。

根據聚集索引的這個特點,我們就可以分析出,它在查詢范圍值的時候效率比較高。例如,我們要查按日期排列的一組數據,利用聚集索引就可以迅速找到包含開始日期的行,然后檢索表中所有相鄰的行,直到到達結束日期。

非聚集索引索引中鍵值的邏輯順序不同于表中相應行的物理順序。

索引是通過二叉樹的數據結構來描述的,我們可以這么理解聚集索引索引的葉節點就是數據節點。而非集索引的葉節點仍然是索引節點,只不過有一個指針指向對應的數據塊。稍微接觸過數據結構的同學應該很容易就能理解。 

非聚集索引很像我們按照部首查字典,字典編排是按照拼音順序的,但我們仍可以用部首進行定位查詢。

三、問題解決與應用

下面這幅圖片介紹了我們應該什么時候用什么類型的索引。

在聚集索引被使用時,每次數據的變化,都可能導致表中的數據按照聚集索引重新調整順序。這樣也就合理的解釋了上邊“在大批量數據、高并發的情況下頻繁更新和查詢”引起的死鎖問題。 

去掉聚集索引、改成非聚集索引或修改索引填充因子這三種方法理論上都能解決上述問題,只是推測,筆者并沒有測試。

四、小結

類似數據庫中的知識還有許多不為我們所知,在項目中遇到的新問題后要知其然,知其所以然,這樣才能獲得寶貴的項目經驗。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢