中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Mysql索引數據結構-創(chuàng)新互聯(lián)

Mysql索引數據結構(來源)##

索引常見數據結構:

澤州ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
  1. 順序查找: 最基本的查詢算法-復雜度O(n),大數據量此算法效率糟糕。

  2. 二叉樹查找(binary tree search): O(log2n),數據本身的組織結構不可能完全滿足各種數據結構。

  3. hash索引 無法滿足范圍查找。哈希索引基于哈希表實現(xiàn),只有精確匹配索引所有列的查詢才有效。

  4. 二叉樹、紅黑樹 [復雜度O(h)]導致樹高度非常高(平衡二叉樹一個節(jié)點只能有左子樹和右子樹),邏輯上很近的節(jié)點(父子)物理上可能很遠,無法利用局部性,IO次數多查找慢,效率低。todo 邏輯上相鄰節(jié)點沒法直接通過順序指針關聯(lián),可能需要迭代回到上層節(jié)點重復向下遍歷找到對應節(jié)點,效率低

  5. B-Tree

    • B-TREE 每個節(jié)點都是一個二元數組: [key, data],所有節(jié)點都可以存儲數據。key為索引key,data為除key之外的數據。
    • 檢索原理:首先從根節(jié)點進行二分查找,如果找到則返回對應節(jié)點的data,否則對相應區(qū)間的指針指向的節(jié)點遞歸進行查找,直到找到節(jié)點或未找到節(jié)點返回null指針。
    • 缺點:1.插入刪除新的數據記錄會破壞B-Tree的性質,因此在插入刪除時,需要對樹進行一個分裂、合并、轉移等操作以保持B-Tree性質。造成IO操作頻繁。2.區(qū)間查找可能需要返回上層節(jié)點重復遍歷,IO操作繁瑣。
  6. B+Tree: B-Tree的變種

    • 與B-Tree相比,B+Tree有以下不同點:非葉子節(jié)點不存儲data,只存儲索引key;只有葉子節(jié)點才存儲data
    • Mysql中B+Tree:在經典B+Tree的基礎上進行了優(yōu)化,增加了順序訪問指針。在B+Tree的每個葉子節(jié)點增加一個指向相鄰葉子節(jié)點的指針,就形成了帶有順序訪問指針的B+Tree。這樣就提高了區(qū)間訪問性能

為什么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)

h5響應式網站建設
陆川县| 万荣县| 惠安县| 峡江县| 泌阳县| 青铜峡市| 正阳县| 黄梅县| 碌曲县| 师宗县| 钦州市| 晴隆县| 青铜峡市| 山丹县| 原平市| 遂川县| 中江县| 尖扎县| 麻江县| 扎兰屯市| 江城| 灵寿县| 洛浦县| 青州市| 得荣县| 宁乡县| 讷河市| 芷江| 林甸县| 那坡县| 南岸区| 桂东县| 台山市| 土默特右旗| 海门市| 福安市| 莎车县| 共和县| 邢台市| 巴南区| 靖远县|