4. Mysql技術(shù)內(nèi)幕-索引和算法

索引和算法

索引概述

  • B+索引
  • 全文索引
  • 哈希索引: mysql支持的hash索引是自適應(yīng)的,不能認(rèn)為干預(yù)是否在一張表中生成

數(shù)據(jù)結(jié)構(gòu)和算法

二分查找法

將記錄按有序排列,在查找過程中采用跳躍式的方式查找,即先以有序數(shù)列的中點(diǎn)位置為比較對(duì)象
其中找到頁后,在查找具體行記錄時(shí),在pagedirectory中使用二分查找

二叉查找樹和平衡二叉樹

二叉查找樹
二叉查找樹中,左子樹的鍵值總小于根的鍵值,右子樹的鍵值總大于根的鍵值

平衡二叉樹
首先符合二叉查找樹的定義,其次滿足任何節(jié)點(diǎn)的兩個(gè)子樹的高度最大差為1

B+樹

為磁盤或其他直接存取輔助設(shè)備設(shè)計(jì)的一種平衡查找樹,在B+樹種,所有記錄節(jié)點(diǎn)都是按照鍵值的大小放在同一層的葉子節(jié)點(diǎn),有哥哥葉子節(jié)點(diǎn)進(jìn)行連接

聚集索引

按照每張表主鍵構(gòu)造一顆B+樹,同時(shí)葉子節(jié)點(diǎn)存放的即為整張表的行記錄數(shù)據(jù),每張表只能擁有一個(gè)聚集索引,聚集索引的存儲(chǔ)并不是物理連續(xù)的,而是邏輯連續(xù)的,一是每個(gè)頁通過雙向鏈表連接,二是每個(gè)頁中的記錄也通過雙向鏈表連接

輔助索引

即非聚集索引,葉子節(jié)點(diǎn)并不包含行記錄的全部數(shù)據(jù),葉子節(jié)點(diǎn)除了包含鍵值外,還包含一個(gè)書簽,告訴innodb在哪里找到與索引相對(duì)應(yīng)的行的數(shù)據(jù)


1.png

先查找輔助索引,在根據(jù)輔助索引的主鍵id,查找聚集索引

B+樹索引的修改

  1. Fast Index Creation
    對(duì)數(shù)據(jù)表增加S鎖,不影響讀影響寫入
  2. Online scheme Change
    創(chuàng)建臨時(shí)表,將原有數(shù)據(jù)導(dǎo)入,然后同步這段時(shí)間寫入的數(shù)據(jù),最后rename
  3. Online DDl

B+樹索引的使用

  1. 聯(lián)合索引
    對(duì)表上多個(gè)列進(jìn)行索引,并且按照索引的順序在B+樹上進(jìn)行排序,并且在orderby時(shí)如果按照索引的順序排序,可以避免filesort

  2. 覆蓋索引
    從輔助索引中就可以得到查詢的記錄,不需要查詢聚集索引中的記錄

  3. Multi-Range Read優(yōu)化

  • MRR是數(shù)據(jù)訪問變得較為順序,在查詢輔助索引時(shí),結(jié)果按照主鍵進(jìn)行排序,在順序查找聚集索引
  • 減少緩沖池中頁被替換的次數(shù)
  • 批量處理對(duì)鍵值的查詢操作
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末治泥,一起剝皮案震驚了整個(gè)濱河市雷滋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌同窘,老刑警劉巖淑际,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奔穿,死亡現(xiàn)場(chǎng)離奇詭異闻鉴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)芒篷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門搜变,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人针炉,你說我怎么就攤上這事挠他。” “怎么了篡帕?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵殖侵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我镰烧,道長(zhǎng)拢军,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任怔鳖,我火速辦了婚禮朴沿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘败砂。我一直安慰自己,他們只是感情好魏铅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布昌犹。 她就那樣靜靜地躺著,像睡著了一般览芳。 火紅的嫁衣襯著肌膚如雪斜姥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天沧竟,我揣著相機(jī)與錄音铸敏,去河邊找鬼。 笑死悟泵,一個(gè)胖子當(dāng)著我的面吹牛杈笔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糕非,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蒙具,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼球榆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起禁筏,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤持钉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后篱昔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體每强,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年州刽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了空执。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怀伦,死狀恐怖脆烟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情房待,我是刑警寧澤邢羔,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站桑孩,受9級(jí)特大地震影響拜鹤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜流椒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一敏簿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宣虾,春花似錦惯裕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹉胖,卻和暖如春握玛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甫菠。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工挠铲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寂诱。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓拂苹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親痰洒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子醋寝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容