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

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

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

索引存儲在內存中,為服務器存儲引擎為了快速找到記錄的一種數(shù)據(jù)結構。索引的主要作用是加快數(shù)據(jù)查找速度,提高數(shù)據(jù)庫的性能。

索引的分類

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

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

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

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

(5) 全文索引:老版本 MySQL 自帶的全文索引只能用于數(shù)據(jù)庫引擎為 MyISAM 的數(shù)據(jù)表,新版本 MySQL 5.6 的 InnoDB 支持全文索引。默認 MySQL 不支持中文全文檢索,可以通過擴展 MySQL,添加中文全文檢索或為中文內容表提供一個對應的英文索引表的方式來支持中文。

1. 索引結構

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

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

Hash 索引: 只有Memory引擎支持, 使用場景簡單.

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

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

2. BTree結構

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

(1) 樹中每個節(jié)點最多包含m個孩子.

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

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

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

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

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

3.B+Tree 結構

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

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

2.B+Tree葉子節(jié)點元素維護了一個單項鏈表.

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

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

MySQL中的B+Tree

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

MySql中的B+Tree索引結構示意圖:

責任編輯:華軒 來源: 今日頭條
相關推薦

2025-04-02 01:22:44

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

2025-03-27 04:00:00

2018-10-15 16:30:14

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

2024-03-14 14:56:22

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

2024-04-19 08:23:06

2019-07-04 14:22:56

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

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ù)庫索引類型

2022-03-29 14:49:14

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

2010-04-22 16:31:20

Oracle開發(fā)面試題

2015-07-23 14:13:43

前端開發(fā)面試題

2021-01-08 08:34:09

Synchronize線程開發(fā)技術

2023-07-11 08:00:00

2015-11-02 11:39:42

大數(shù)據(jù)應用

2018-09-30 15:55:56

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 永久免费av | 精品中文字幕一区 | 国产日韩欧美一区二区 | 日本三级电影在线观看视频 | 欧美日韩免费 | 欧美激情欧美激情在线五月 | 91一区二区三区 | 欧美美女爱爱 | 成人精品视频在线观看 | 91成人免费看片 | 一区二区国产在线 | 亚洲高清av在线 | 免费一级毛片 | 在线亚洲一区二区 | 中文字幕亚洲免费 | 秋霞在线一区二区 | av性色全交蜜桃成熟时 | 欧美 日韩 中文 | 日韩av在线一区 | 91精品国产91久久久久久最新 | 精品一区国产 | 欧美国产亚洲一区二区 | 一区在线视频 | 国产一级片免费视频 | 伊人久久一区二区 | 精品国产色 | 精品美女 | 国产高清精品一区二区三区 | 亚洲午夜久久久 | 国产成人精品一区二三区在线观看 | www.9191| 欧美精品在线一区 | 国产99久久精品一区二区永久免费 | 日本亚洲一区 | 久久成人高清视频 | 91中文| 午夜av在线 | 国产欧美精品一区二区 | 一级a性色生活片久久毛片 午夜精品在线观看 | 99久久99| 美女国产 |