成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大數(shù)據(jù)開(kāi)發(fā)面試:索引的底層實(shí)現(xiàn)原理是什么?

開(kāi)發(fā) 前端
索引存儲(chǔ)在內(nèi)存中,為服務(wù)器存儲(chǔ)引擎為了快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)。索引的主要作用是加快數(shù)據(jù)查找速度,提高數(shù)據(jù)庫(kù)的性能。

索引存儲(chǔ)在內(nèi)存中,為服務(wù)器存儲(chǔ)引擎為了快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)。索引的主要作用是加快數(shù)據(jù)查找速度,提高數(shù)據(jù)庫(kù)的性能。

索引的分類

(1) 普通索引:最基本的索引,它沒(méi)有任何限制。

(2) 唯一索引:與普通索引類似,不同的就是索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。

(3) 主鍵索引:它是一種特殊的唯一索引,用于唯一標(biāo)識(shí)數(shù)據(jù)表中的某一條記錄,不允許有空值,一般用 primary key 來(lái)約束。

(4) 聯(lián)合索引(又叫復(fù)合索引):多個(gè)字段上建立的索引,能夠加速?gòu)?fù)合查詢條件的檢索。

(5) 全文索引:老版本 MySQL 自帶的全文索引只能用于數(shù)據(jù)庫(kù)引擎為 MyISAM 的數(shù)據(jù)表,新版本 MySQL 5.6 的 InnoDB 支持全文索引。默認(rèn) MySQL 不支持中文全文檢索,可以通過(guò)擴(kuò)展 MySQL,添加中文全文檢索或?yàn)橹形膬?nèi)容表提供一個(gè)對(duì)應(yīng)的英文索引表的方式來(lái)支持中文。

1. 索引結(jié)構(gòu)

索引是在Mysql的存儲(chǔ)引擎(InnoDB,MyISAM)層中實(shí)現(xiàn)的, 而不是在服務(wù)層實(shí)現(xiàn)的. 所以每種存儲(chǔ)引擎的索引都不一定完全相同, 也不是所有的存儲(chǔ)引擎都支持所有的索引類型的, Mysql目前提供了以下4種索引:

B+Tree 索引: 最常見(jiàn)的索引類型, 大部分索引都支持B+樹索引.

Hash 索引: 只有Memory引擎支持, 使用場(chǎng)景簡(jiǎn)單.

R-Tree索引(空間索引): 空間索引是MyISAM引擎的一個(gè)特殊索引類型, 主要地理空間數(shù)據(jù), 使用也很少.

S-Full-text(全文索引): 全文索引也是MyISAM的一個(gè)特殊索引類型, 主要用于全文索引, InnoDB從Mysql5.6版本開(kāi)始支持全文索引.

2. BTree結(jié)構(gòu)

B+Tree是在BTree基礎(chǔ)上進(jìn)行演變的, 所以我們先來(lái)看看BTree, BTree又叫多路平衡搜索樹, 一顆m叉BTree特性如下:

(1) 樹中每個(gè)節(jié)點(diǎn)最多包含m個(gè)孩子.

(2) 除根節(jié)點(diǎn)與葉子節(jié)點(diǎn)外, 每個(gè)節(jié)點(diǎn)至少有[ceil(m/2)] 個(gè)孩子(ceil函數(shù)指向上取整).

(3) 若根節(jié)點(diǎn)不是葉子節(jié)點(diǎn), 則至少有兩個(gè)孩子.

(4) 每個(gè)非葉子節(jié)點(diǎn)由n個(gè)Key和n+1個(gè)指針組成, 其中 [ceil(m/2) -1 ] <= n <= m-1.

以5叉BTree為例, key的數(shù)量: 公式推導(dǎo) [ceil(m/2) -1 ] <= n <= m-1.

所以 2 <= n <= 4, 中間節(jié)點(diǎn)分裂父節(jié)點(diǎn),兩邊節(jié)點(diǎn)分裂.

3.B+Tree 結(jié)構(gòu)

B+Tree為BTree的變種, B+Tree與BTree的區(qū)別:

1.B+Tree的葉子節(jié)點(diǎn)保存所有的key信息, 依key大小順序排列.

2.B+Tree葉子節(jié)點(diǎn)元素維護(hù)了一個(gè)單項(xiàng)鏈表.

所有的非葉子節(jié)點(diǎn)都可以看作是key的索引部分。

由于B+Tree只有葉子節(jié)點(diǎn)保存key信息, 查詢?nèi)魏蝛ey都要從root走的葉子. 所以B+Tree查詢效率更穩(wěn)定.

MySQL中的B+Tree

MySql索引數(shù)據(jù)結(jié)構(gòu)對(duì)經(jīng)典的B+Tree進(jìn)行了優(yōu)化, 在原B+Tree的基礎(chǔ)上, 增加了一個(gè)指向相鄰葉子節(jié)點(diǎn)的鏈表指針, 就形成了帶有順序指針的B+Tree, 提高區(qū)間訪問(wèn)的性能.

MySql中的B+Tree索引結(jié)構(gòu)示意圖:

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2025-04-02 01:22:44

MySQL樂(lè)觀鎖數(shù)據(jù)

2025-03-27 04:00:00

2018-10-15 16:30:14

數(shù)據(jù)庫(kù)索引Mysql

2024-03-14 14:56:22

反射Java數(shù)據(jù)庫(kù)連接

2024-04-19 08:23:06

2019-07-04 14:22:56

大數(shù)據(jù)數(shù)據(jù)挖掘數(shù)量級(jí)

2024-08-29 16:30:27

2024-02-29 16:49:20

volatileJava并發(fā)編程

2013-08-01 14:03:50

大數(shù)據(jù)比大數(shù)據(jù)還大更大的數(shù)據(jù)

2015-09-14 09:28:05

大數(shù)據(jù)發(fā)展根基

2024-12-24 14:11:57

2023-01-04 07:54:03

HashMap底層JDK

2017-02-08 11:00:50

數(shù)據(jù)庫(kù)索引類型

2022-03-29 14:49:14

大數(shù)據(jù)數(shù)據(jù)分析

2021-01-08 08:34:09

Synchronize線程開(kāi)發(fā)技術(shù)

2023-07-11 08:00:00

2010-04-22 16:31:20

Oracle開(kāi)發(fā)面試題

2015-07-23 14:13:43

前端開(kāi)發(fā)面試題

2015-11-02 11:39:42

大數(shù)據(jù)應(yīng)用

2018-09-30 15:55:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品一区二区三区视频播放 | www.亚洲一区二区 | 中文字幕欧美在线观看 | 亚洲一区二区三区免费在线 | 日韩成人中文字幕 | 亚洲+变态+欧美+另类+精品 | 亚洲狠狠爱 | 雨宫琴音一区二区在线 | 精品少妇v888av | 51ⅴ精品国产91久久久久久 | 黄色大片在线免费观看 | 日韩精品在线观看视频 | 特级毛片www | 亚洲中字在线 | 一级少妇女片 | 福利视频亚洲 | 日韩精品视频在线 | 国产一区二区三区免费 | 成人欧美一区二区三区在线观看 | 99精品久久 | 久久久高清 | 成人免费在线播放视频 | 中文字幕1区 | 亚洲人精品午夜 | 成人免费视频观看 | 两性午夜视频 | 伊久在线| 亚洲码欧美码一区二区三区 | 久久久精品一区二区 | 日韩美女一区二区三区在线观看 | 男女免费网站 | 日韩精品久久久久 | 黄在线免费观看 | 亚洲一区二区av | 亚洲色图插插插 | 五月婷婷在线播放 | 中文字幕亚洲一区二区va在线 | 国产高清一区二区三区 | 久久高清精品 | 欧美精品一区二区三区蜜臀 | 久久免费精品视频 |