chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

對(duì) B+ 樹與索引在 MySQL 中的認(rèn)識(shí)

數(shù)據(jù)分析與開發(fā) ? 來源:博客園 ? 作者:AnnsShadoW ? 2021-11-08 11:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

本質(zhì):數(shù)據(jù)庫維護(hù)某種數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù)

索引取舍原則:索引的結(jié)構(gòu)組織要盡量減少查找過程中磁盤I/O的存取次數(shù)

B樹

滿足的條件

d為大于1的一個(gè)正整數(shù),稱為B-Tree的度

h為一個(gè)正整數(shù),稱為B-Tree的高度

每個(gè)非葉子節(jié)點(diǎn)由n-1個(gè)key和n個(gè)指針組成,其中d《=n《=2d

每個(gè)葉子節(jié)點(diǎn)最少包含一個(gè)key和兩個(gè)指針,最多包含2d-1個(gè)key和2d個(gè)指針,葉節(jié)點(diǎn)的指針均為null

所有葉節(jié)點(diǎn)具有相同的深度,等于樹高h(yuǎn)

key和指針互相間隔,節(jié)點(diǎn)兩端是指針

一個(gè)節(jié)點(diǎn)中的key從左到右非遞減排列

所有節(jié)點(diǎn)組成樹結(jié)構(gòu)

每個(gè)指針要么為null,要么指向另外一個(gè)節(jié)點(diǎn)

一個(gè)度為d的B-Tree,設(shè)其索引N個(gè)key,則其樹高h(yuǎn)的上限為logd((N+1)/2),檢索一個(gè)key查找節(jié)點(diǎn)的個(gè)數(shù)的漸進(jìn)復(fù)雜度為logd(N)

更新后的操作

插入刪除新的數(shù)據(jù)記錄會(huì)破壞B-Tree的性質(zhì),因此在插入刪除時(shí),需要對(duì)樹進(jìn)行一個(gè)分裂、合并、轉(zhuǎn)移等操作以保持B-Tree性質(zhì)

B+樹

bb7b4ebc-3fc2-11ec-9195-dac502259ad0.jpg

每個(gè)節(jié)點(diǎn)的指針上限為2d而不是2d+1

內(nèi)節(jié)點(diǎn)不存儲(chǔ)data,只存儲(chǔ)key

葉子節(jié)點(diǎn)不存儲(chǔ)指針

在經(jīng)典B+樹的基礎(chǔ)上,增加了順序訪問指針--》提高區(qū)間訪問的性能

為什么使用B/B+樹?

主存讀取

當(dāng)系統(tǒng)需要讀取主存時(shí),則將地址信號(hào)放到地址總線上傳給主存

主存讀到地址信號(hào)后,解析信號(hào)并定位到指定存儲(chǔ)單元,然后將此存儲(chǔ)單元數(shù)據(jù)放到數(shù)據(jù)總線上,供其它部件讀取

主存存取的時(shí)間僅與存取次數(shù)呈線性關(guān)系,因?yàn)椴淮嬖?a target="_blank">機(jī)械操作,兩次存取的數(shù)據(jù)的“距離”不會(huì)對(duì)時(shí)間有任何影響

磁盤存取原理

磁盤轉(zhuǎn)動(dòng),每個(gè)磁頭不動(dòng),負(fù)責(zé)讀取內(nèi)容

不過已經(jīng)有了多磁頭獨(dú)立技術(shù)

局部性原理

磁盤預(yù)讀:長度一般以頁的整數(shù)倍為單位

MyISAM索引實(shí)現(xiàn)

使用B+樹作為索引結(jié)構(gòu),data存放數(shù)據(jù)記錄的地址

索引文件與數(shù)據(jù)文件分離

主索引和輔助索引(Secondary key)在結(jié)構(gòu)上沒有任何區(qū)別,只是主索引要求key是唯一的,而輔助索引的key可以重復(fù)

非聚集:MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應(yīng)數(shù)據(jù)記錄

.MYI文件的組成

整個(gè)索引文件的基本信息state

各索引的限制信息base

各索引的定義信息keydef

各索引記錄的概要信息recinfo

讀取索引的流程

query請(qǐng)求,直接讀取key cache中的cache block,有就返回

沒有就到.MYI文件中以file block方式讀取數(shù)據(jù)

再以相同的格式存取key cache

再將key cache中的數(shù)據(jù)返回

InnoDB索引實(shí)現(xiàn)

也是使用B+樹

第一個(gè)與MyISAM的不同點(diǎn)

第一個(gè)重大區(qū)別是InnoDB的數(shù)據(jù)文件本身就是索引文件,表數(shù)據(jù)文件本身就是按B+Tree組織的一個(gè)索引結(jié)構(gòu)

InnoDB的數(shù)據(jù)文件本身要按主鍵聚集

所以InnoDB要求表必須有主鍵(MyISAM可以沒有)

沒有顯式指定,自動(dòng)選擇唯一標(biāo)識(shí)列

不存在的話,生成6個(gè)字節(jié)長整型的隱含字段

第二個(gè)與MyISAM的不同點(diǎn)

InnoDB的輔助索引data域存儲(chǔ)相應(yīng)記錄主鍵的值而不是地址

換句話說,InnoDB的所有輔助索引都引用主鍵作為data域

輔助索引搜索需要檢索兩遍索引:首先檢索輔助索引獲得主鍵,然后用主鍵到主索引中檢索獲得記錄

得出的優(yōu)化點(diǎn)

不建議使用過長的字段作為主鍵,因?yàn)樗休o助索引都引用主索引,過長的主索引會(huì)令輔助索引變得過大

用非單調(diào)的字段作為主鍵在InnoDB中也不好,因?yàn)镮nnoDB數(shù)據(jù)文件本身是一顆B+Tree,非單調(diào)的主鍵會(huì)造成在插入新記錄時(shí)數(shù)據(jù)文件為了維持B+Tree的特性而頻繁的分裂調(diào)整,十分低效,而使用自增字段作為主鍵就很不錯(cuò)了

聚簇索引鍵被更新造成的成本除了索引數(shù)據(jù)可能會(huì)移動(dòng),相關(guān)的所有記錄數(shù)據(jù)也要移動(dòng)

索引使用策略及優(yōu)化

全列匹配

按照索引中所有列進(jìn)行精確匹配(這里精確匹配指“=”或“IN”匹配)時(shí),索引可以被用到

理論上索引對(duì)順序是敏感的,但是由于MySQL的查詢優(yōu)化器會(huì)自動(dòng)調(diào)整where子句的條件順序以使用適合的索引

最左前綴匹配

當(dāng)查詢條件精確匹配索引的左邊連續(xù)一個(gè)或幾個(gè)列時(shí),索引可以被用到

查詢條件用到了索引中列的精確匹配,但是中間某個(gè)條件未提供

只能用到索引中,從中間斷開前的列

應(yīng)對(duì)

可以增加輔助索引

當(dāng)中間條件選項(xiàng)較少時(shí),用隔離列的方式,使用IN包含

看情況,比較建立

查詢條件沒有指定索引第一列

不滿足使用索引的條件

匹配某列的前綴字符串

可以使用索引

如果通配符%不出現(xiàn)在開頭,則可以用到索引,但根據(jù)具體情況不同可能只會(huì)用其中一個(gè)前綴

范圍查詢

范圍列可以用到索引(必須是最左前綴),但是范圍列后面的列無法用到索引

同時(shí),索引最多用于一個(gè)范圍列,因此如果查詢條件中有兩個(gè)范圍列則無法全用到索引

僅用explain可能無法區(qū)分范圍索引和多值匹配

查詢條件中含有函數(shù)/表達(dá)式

一般不使用哦

手工算好再代入

索引選擇性與前綴索引

MyISAM與InnoDB基數(shù)統(tǒng)計(jì)方式

MyisAM索引的基數(shù)值(Cardinality,show index 命令可以看見)是精確的,InnoDB則是估計(jì)值

MyisAM統(tǒng)計(jì)信息是保存磁盤中,在alter表或Analyze table操作更新此信息

而InnoDB則是在表第一次打開的時(shí)候估計(jì)值保存在緩存區(qū)內(nèi)

不建議建立索引的情況

表記錄比較少

索引的選擇性低:不重復(fù)的索引值(也叫基數(shù),Cardinality)與表記錄數(shù)(#T)的比值

前綴索引

用列的前綴代替整個(gè)列作為索引key,當(dāng)前綴長度合適時(shí),可以做到既使得前綴索引的選擇性接近全列索引,同時(shí)因?yàn)樗饕齥ey變短而減少了索引文件的大小和維護(hù)開銷

缺點(diǎn)

不能用于ORDER BY和GROUP BY操作

也不能用于Covering index(即當(dāng)索引本身包含查詢所需全部數(shù)據(jù)時(shí),不再訪問數(shù)據(jù)文件本身)

InnoDB主鍵選擇與插入優(yōu)化

如果沒有特別的需要,請(qǐng)永遠(yuǎn)使用一個(gè)與業(yè)務(wù)無關(guān)的自增字段作為主鍵

InnoDB使用聚集索引,數(shù)據(jù)記錄本身被存于主索引(一顆B+Tree)的葉子節(jié)點(diǎn)上

這就要求同一個(gè)葉子節(jié)點(diǎn)內(nèi)(大小為一個(gè)內(nèi)存頁或磁盤頁)的各條數(shù)據(jù)記錄按主鍵順序存放,因此每當(dāng)有一條新的記錄插入時(shí),MySQL會(huì)根據(jù)其主鍵將其插入適當(dāng)?shù)墓?jié)點(diǎn)和位置,如果頁面達(dá)到裝載因子(InnoDB默認(rèn)為15/16),則開辟一個(gè)新的頁(節(jié)點(diǎn))

如果使用非自增主鍵,每次插入近似隨機(jī),容易引起數(shù)據(jù)的移動(dòng),重新讀目標(biāo)頁面,碎片也多了,雖然也可以用OPTIMIZE TABLE重建優(yōu)化,但麻煩啊

參考資料

圖片來源網(wǎng)絡(luò)

《高性能MySQL》

作者:AnnsShadoW

https://www.cnblogs.com/annsshadow/p/5355090.html

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 磁盤
    +關(guān)注

    關(guān)注

    1

    文章

    396

    瀏覽量

    26429
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    4011

    瀏覽量

    68294
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    903

    瀏覽量

    29460

原文標(biāo)題:對(duì) B+ 樹與索引在 MySQL 中的認(rèn)識(shí)

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    潤芯微科技完成近4億元B+輪融資

    1月29日,國產(chǎn)智能基座方案提供商潤芯微科技(RIVOTEK)正式宣布完成近4億元B+輪融資。本輪融資由重慶長嘉縱橫私募股權(quán)投資基金、恒旭資本、江蘇省戰(zhàn)新基金、蘇州高鐵新城國控等多家國資及產(chǎn)業(yè)資本
    的頭像 發(fā)表于 01-29 16:15 ?280次閱讀

    無線傾角傳感器監(jiān)測的應(yīng)用:以科技守護(hù)活文物的結(jié)構(gòu)安全

    無線傾角傳感器監(jiān)測的應(yīng)用:以科技守護(hù)活文物的結(jié)構(gòu)安全
    的頭像 發(fā)表于 01-09 11:38 ?639次閱讀
    無線傾角傳感器<b class='flag-5'>在</b>古<b class='flag-5'>樹</b>監(jiān)測<b class='flag-5'>中</b>的應(yīng)用:以科技守護(hù)活文物的結(jié)構(gòu)安全

    工業(yè)數(shù)據(jù)臺(tái)支持接入MySQL數(shù)據(jù)庫嗎

    工業(yè)數(shù)據(jù)臺(tái)完全支持接入MySQL數(shù)據(jù)庫 ,且通過數(shù)據(jù)同步、集成與治理等技術(shù)手段,能夠充分發(fā)揮MySQL在數(shù)據(jù)存儲(chǔ)與事務(wù)處理方面的優(yōu)勢,同時(shí)彌補(bǔ)其在數(shù)據(jù)分析與共享能力上的不足,具體分析如下: 技術(shù)
    的頭像 發(fā)表于 12-04 11:23 ?365次閱讀
    工業(yè)數(shù)據(jù)<b class='flag-5'>中</b>臺(tái)支持接入<b class='flag-5'>MySQL</b>數(shù)據(jù)庫嗎

    為什么充電過程HY2213-BB3A會(huì)特別特別燙,這應(yīng)該如何解決?

    打開,用Type-C充電,充滿電后燈熄滅“充電”這個(gè)燈熄滅,未拔下Type-C的情況下,而且R640歐姆電阻也為焊上,我用萬用表測量B+和GND電壓,32芯片燒了,這是為什么,有什么解決辦法 原理圖 PCB 如下,入門小白,
    發(fā)表于 11-26 21:05

    Hudi系列:Hudi核心概念之索引(Indexs)

    上的Instant action操作類型 ?1.4 時(shí)間線上State狀態(tài)類型 ?1.5 時(shí)間線官網(wǎng)實(shí)例 ?二. 文件布局 ?三. 索引 3.1 簡介 3.2 對(duì)比其它(Hive)沒有索引的區(qū)別 3.2
    的頭像 發(fā)表于 10-21 09:47 ?371次閱讀
    Hudi系列:Hudi核心概念之<b class='flag-5'>索引</b>(Indexs)

    先楫半導(dǎo)體完成B+輪融資,移和創(chuàng)投資加持

    2025年9月10日,上海|國產(chǎn)高性能MCU產(chǎn)品及嵌入式解決方案供應(yīng)商“上海先楫半導(dǎo)體科技有限公司”(先楫半導(dǎo)體,HPMicro)完成B+輪戰(zhàn)略融資,獲中國移動(dòng)旗下移和創(chuàng)投資加持,投資方還包括浦東
    的頭像 發(fā)表于 09-11 08:32 ?1416次閱讀
    先楫半導(dǎo)體完成<b class='flag-5'>B+</b>輪融資,<b class='flag-5'>中</b>移和創(chuàng)投資加持

    宜科MVT閥島科技人形機(jī)器人中的應(yīng)用

    科技飛速發(fā)展的當(dāng)下,機(jī)器人行業(yè)正以前所未有的速度蓬勃興起。其中,宇科技作為行業(yè)內(nèi)的佼佼者,憑借其創(chuàng)新的產(chǎn)品和領(lǐng)先的技術(shù),全球機(jī)器人市場占據(jù)了重要地位。從四足機(jī)器人到人形機(jī)器人,
    的頭像 發(fā)表于 08-16 17:31 ?1456次閱讀

    MySQL慢查詢終極優(yōu)化指南

    作為一名在生產(chǎn)環(huán)境摸爬滾打多年的運(yùn)維工程師,我見過太多因?yàn)槁樵儗?dǎo)致的線上故障。今天分享一套經(jīng)過實(shí)戰(zhàn)檢驗(yàn)的MySQL慢查詢分析與索引優(yōu)化方法論,幫你徹底解決數(shù)據(jù)庫性能瓶頸。
    的頭像 發(fā)表于 08-13 15:55 ?822次閱讀

    2.88億!濾波器明星企業(yè)新聲半導(dǎo)體完成B+輪融資

    據(jù)傳感器專家網(wǎng)獲悉,近日,濾波器明星企業(yè)新聲半導(dǎo)體宣布已完成2.88億元B+輪融資,本輪融資由洪泰基金領(lǐng)投,其他投資方包括泓生資本、滕華投資、中山金控、合肥市建投集團(tuán)及濱湖金投集團(tuán)。 值得一提的是
    的頭像 發(fā)表于 08-12 19:16 ?1459次閱讀
    2.88億!濾波器明星企業(yè)新聲半導(dǎo)體完成<b class='flag-5'>B+</b>輪融資

    MySQL 8.0性能優(yōu)化實(shí)戰(zhàn)指南

    作為一名運(yùn)維工程師,MySQL數(shù)據(jù)庫優(yōu)化是我們?nèi)粘9ぷ髦凶罹咛魬?zhàn)性的任務(wù)之一。MySQL 8.0作為當(dāng)前主流版本,性能、安全性和功能上都有了顯著提升,但如何充分發(fā)揮其潛力,仍需要我們掌握正確的優(yōu)化策略。
    的頭像 發(fā)表于 07-24 11:48 ?826次閱讀

    MySQL數(shù)據(jù)備份與恢復(fù)策略

    數(shù)據(jù)是企業(yè)的核心資產(chǎn),MySQL作為主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其數(shù)據(jù)的安全性和可靠性至關(guān)重要。本文將深入探討MySQL的數(shù)據(jù)備份策略、常用備份工具以及數(shù)據(jù)恢復(fù)的最佳實(shí)踐,幫助運(yùn)維工程師構(gòu)建完善的數(shù)據(jù)保護(hù)體系。
    的頭像 發(fā)表于 07-14 11:11 ?703次閱讀

    企業(yè)級(jí)MySQL數(shù)據(jù)庫管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系型數(shù)據(jù)庫,承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)與處理。作為數(shù)據(jù)庫管理員(DBA),掌握MySQL的企業(yè)級(jí)部署、優(yōu)化、維護(hù)技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),系統(tǒng)闡述MySQL
    的頭像 發(fā)表于 07-09 09:50 ?698次閱讀

    介紹三種常見的MySQL高可用方案

    方案——MHA(MySQL High Availability Manager)、PXC(Percona XtraDB Cluster) 和 Galera Cluster。我們將從原理、架構(gòu)、優(yōu)勢和局限性等角度對(duì)比這三種方案,并探討它們實(shí)際應(yīng)用
    的頭像 發(fā)表于 05-28 17:16 ?1205次閱讀

    MySQL數(shù)據(jù)庫是什么

    MySQL數(shù)據(jù)庫是一種 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,由瑞典MySQL AB公司開發(fā),后被Oracle公司收購。它通過結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)存儲(chǔ)、管理和操作,廣泛應(yīng)用于Web
    的頭像 發(fā)表于 05-23 09:18 ?1158次閱讀

    北大教授領(lǐng)銜,無錫一傳感器公司完成B+輪數(shù)千萬元融資

    近日,北微傳感科技有限公司(下文簡稱“北微傳感”)宣布,已完成數(shù)千萬B+輪融資。本輪投資方尚未公布。
    的頭像 發(fā)表于 05-13 10:36 ?681次閱讀