MySql Innodb 資料結構

2021-09-28 22:42:31 字數 1237 閱讀 8642

查閱資料時了解到的資訊 整理一下,方便以後檢視
一、索引介紹

索引是資料庫中非常非常重要的概念,它是儲存引擎能夠快速定位記錄的秘密**,對於提公升資料庫的效能、減輕資料庫伺服器的負擔有著非常重要的作用;索引優化是對查詢效能優化的最有效手段,它能夠輕鬆地將查詢的效能提高幾個數量級。

2. 資料結構 b+tree

nnodb 儲存引擎在絕大多數情況下使用 b+ 樹建立索引,這是關係型資料庫中查詢最為常用和有效的索引,但是 b+ 樹索引並不能找到乙個給定鍵對應的具體值,它只能找到資料行對應的頁,然後正如上一節所提到的,資料庫把整個頁讀入到記憶體中,並在記憶體中查詢具體的資料行。

b+ 樹是平衡樹,它查詢任意節點所耗費的時間都是完全相同的,比較的次數就是 b+ 樹的高度;在這裡,我們並不會深入分析或者動手實現乙個 b+ 樹,只是對它的特性進行簡單的介紹。

聚集索引和輔助索引

資料庫中的 b+ 樹索引可以分為聚集索引(clustered index)和輔助索引(secondary index),它們之間的最大區別就是,聚集索引中存放著一條行記錄的全部資訊,而輔助索引中只包含索引列和乙個用於查詢對應行記錄的『書籤』。

聚集索引與表的物理儲存方式有著非常密切的關係,所有正常的表應該有且僅有乙個聚集索引(絕大多數情況下都是主鍵),表中的所有行記錄資料都是按照聚集索引的順序存放的。

當我們使用聚集索引對錶中的資料進行檢索時,可以直接獲得聚集索引所對應的整條行記錄資料所在的頁,不需要進行第二次操作。

輔助索引

資料庫將所有的非聚集索引都劃分為輔助索引,但是這個概念對我們理解輔助索引並沒有什麼幫助;輔助索引也是通過 b+ 樹實現的,但是它的葉節點並不包含行記錄的全部資料,僅包含索引中的所有鍵和乙個用於查詢對應行記錄的『書籤』,在 innodb 中這個書籤就是當前記錄的主鍵。

輔助索引的存在並不會影響聚集索引,因為聚集索引構成的 b+ 樹是資料實際儲存的形式,而輔助索引只用於加速資料的查詢,所以一張表上往往有多個輔助索引以此來提公升資料庫的效能。

索引的設計

索引的設計其實是乙個非常重要的內容,同時也是乙個非常複雜的內容;索引的設計與建立對於提公升資料庫的查詢效能至關重要,不過這不是本文想要介紹的內容,有關索引的設計與優化可以閱讀 資料庫索引設計與優化 一書,書中提供了一種非常科學合理的方法能夠幫助我們在資料庫中建立最適合的索引,當然作者也可能會在之後的文章中對索引的設計進行簡單的介紹和分析。

Mysql InnoDB資料頁結構

官方名字 索引頁 所以你知道了,user records 和 free space 之間是此消彼長的關係 簡化下,因為變長字段長度列表,null值列表都沒什麼用 所以儲存記錄為 delete mask 標記是否刪除了 heap no 記錄的序號,序號為0的記錄是infimum,序號1為spuermu...

MySQL innodb 資料頁結構分析

頁 page 是 innodb 儲存引擎用於管理資料的最小磁碟單位。常見的頁型別有資料頁 undo 頁 系統頁 事務資料頁等,本文主要分析的是資料頁。預設的頁大小為 16kb,每個頁中至少儲存有 2 條或以上的行記錄,本文主要分析的是頁與行記錄的資料結構,有關索引和 b tree 的部分在後續文章中...

MySQL InnoDB 儲存結構

mysql innodb 儲存結構 innodb儲存引擎的關鍵特性包括 插入緩衝 insert buffer 兩次寫 double write 自適應雜湊索引 adaptive hash index 非同步io async io 重新整理鄰接頁 從邏輯上講 所有的資料都被邏輯的放在乙個空間中,稱為t...