MySQL原理 InnoDB表的限制

2021-09-26 06:28:56 字數 897 閱讀 6021

本文基於mysql 5.7

目前oltp業務的表如果是使用mysql一般都會使用innodb引擎,這也是預設的表引擎。那麼這種引擎有什麼限制呢?根據官方文件總結下:

參考:

參考:

關於innodb_page_size這個資料庫例項初始化配置:

innodb_page_size是乙個初始化資料庫例項的引數,在目前的版本中(>=5.7.6),可以選擇的值有4096, 8192, 16384, 32768, 65536。預設是16kb

一般越小,記憶體劃分粒度越大,使用率越高,但是會有其他問題,就是限制了索引字段還有整行的大小。innodb引擎讀取記憶體還有更新都是一頁一頁更新的,這個innodb_page_size決定了,乙個基本頁的大小。常用b+tree索引,b+樹是為磁碟及其他儲存輔助裝置而設計一種平衡查詢樹(不是二叉樹)。b+樹中,所有記錄的節點按大小順序存放在同一層的葉子節點中,各葉子節點用指標進行連線。mysql將每個葉子節點的大小設定為乙個頁的整數倍,利用磁碟的預讀機制,能有效減少磁碟i/o次數,提高查詢效率。

如果乙個行資料,超過了一頁的一半,那麼乙個頁只能容納一條記錄,這樣b+tree在不理想的情況下就變成了雙向鍊錶。

這也是為什麼要限制住,每一行的大小,也就是下一小節要講的行長度與行大小限制

innodb page size

maximum tablespace size

4kb16tb

8kb32tb

16kb

64tb

32kb

128tb

64kb

256tb

mysql 原理 innodb恢復機制

舉例說明 機制 資料頁a的lsn為100,資料頁b的lsn為200,checkpoint lsn為150,系統lsn為300,表示當前系統已經更新到300,小於150的資料頁已經被刷到磁碟上,因此資料頁a的最新資料一定在磁碟上,而資料頁b則不一定,有可能還在記憶體中。lsn本身你可以理解為不同時間點...

mysql的INNODB引擎鎖的原理試驗

mysql的innodb引擎鎖的原理是怎樣的,來做個試驗。mysql select version version 5.5.20 1 row in set 0.00 sec create table test a int 5 b varchar 10 c varchar 10 insert into...

Mysql的InnoDB引擎 4 表(3)

create table t id int engine innodb partition byrange id partition p0 values less than 10 partition p1 values less than 20 partition p2 values less th...