索引常見數據結構:
澤州ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!順序查找: 最基本的查詢算法-復雜度O(n),大數據量此算法效率糟糕。
二叉樹查找(binary tree search): O(log2n),數據本身的組織結構不可能完全滿足各種數據結構。
hash索引 無法滿足范圍查找。哈希索引基于哈希表實現(xiàn),只有精確匹配索引所有列的查詢才有效。
二叉樹、紅黑樹 [復雜度O(h)]導致樹高度非常高(平衡二叉樹一個節(jié)點只能有左子樹和右子樹),邏輯上很近的節(jié)點(父子)物理上可能很遠,無法利用局部性,IO次數多查找慢,效率低。todo 邏輯上相鄰節(jié)點沒法直接通過順序指針關聯(lián),可能需要迭代回到上層節(jié)點重復向下遍歷找到對應節(jié)點,效率低
B-Tree
B+Tree: B-Tree的變種
為什么Mysql選擇B+TREE索引? B+TREE索引有什么好處?
索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲的磁盤上。這樣的話,索引查找過程中就要產生磁盤I/O消耗,相對于內存存取,I/O存取的消耗要高幾個數量級,所以索引的結構組織要盡量減少查找過程中磁盤I/O的存取次數,提升索引效率。
局部性原理與磁盤預讀:
由于存儲介質的特性,磁盤本身存取就比主存慢很多,再加上機械運動耗費,磁盤的存取速度往往是主存的幾百分分之一,因此為了提高效率,要盡量減少磁盤I/O。為了達到這個目的,磁盤往往不是嚴格按需讀取,而是每次都會預讀,即使只需要一個字節(jié),磁盤也會從這個位置開始,順序向后讀取一定長度的數據放入內存。預讀可以提高I/O效率。預讀的長度一般為頁(page:計算機管理存儲器的邏輯塊-通常為4k)的整倍數. 主存和磁盤以頁為單位交換數據。當程序要讀取的數據不在主存中時,會觸發(fā)一個缺頁異常,此時系統(tǒng)會向磁盤發(fā)出讀盤信號,磁盤會找到數據的起始位置并向后連續(xù)讀取一頁或幾頁載入內存中。
B-/+Tree索引的性能優(yōu)勢:
一般使用磁盤I/O次數評價索引優(yōu)劣。1.結合操作系統(tǒng)存儲結構優(yōu)化處理: mysql巧妙運用操作系統(tǒng)存儲結構(一個節(jié)點分配到一個存儲頁中->盡量減少IO次數) & 磁盤預讀(緩存預讀->加速預讀馬上要用到的數據).2.B+Tree 單個節(jié)點能放多個子節(jié)點,相同IO次數,檢索出更多信息。3.B+TREE 只在葉子節(jié)點存儲數據 & 所有葉子結點包含一個鏈指針 & 其他內層非葉子節(jié)點只存儲索引數據。只利用索引快速定位數據索引范圍,先定位索引再通過索引高效快速定位數據。
來源
B+樹的優(yōu)勢:
因為B+樹沒有與內部節(jié)點相關聯(lián)的數據,所以在內存頁面上可以容納更多的鍵。因此,訪問葉子節(jié)點上的數據需要更少的緩存丟失。
B+樹的葉節(jié)點是鏈接的,因此對樹中的所有對象進行全面掃描只需要一個線性遍歷所有葉節(jié)點。另一方面,B樹需要遍歷樹中的每一層。這種全樹遍歷可能比B+葉子的線性遍歷涉及更多的緩存丟失。
B樹的優(yōu)勢:
因為B樹包含每個鍵的數據,所以經常訪問的節(jié)點可以更靠近根,因此可以更快地訪問。
標題名稱:Mysql索引數據結構-創(chuàng)新互聯(lián)
網站網址:http://www.rwnh.cn/article14/cchjge.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網頁設計公司、全網營銷推廣、網站設計、Google、ChatGPT、微信小程序
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)