MySQL數據庫表各類大小限制小結

本文全部條目總結均來自mysql5.6的官網英文文檔:html

table-size-limitmysql

1. MySQL表的列數限制

1.1 MySQL硬性限制每一個表最大4096個列

1.2 InnoDB存儲引擎的約束: 每一個表最大1017個列;

2. MySQL表的每行數據的限制

2.1 MySQL表限制row size最大 65535個字節

2.2 InnoDB限制row size最大半頁, 默認頁大小16K, 也就是 row size < 8K;

3. MySQL表總數據量的限制

3.1 一個表的總大小限制取決於操做系統的文件限制

1) windows fat32的話, 最大就是4G

若是要想超過4G, 在64位windows上使用NTFS ;

2) 其餘的windows上的文件數的限制等

在Windows上,表空間文件的路徑(包括文件名)不能超過MAX_PATH限制。

在Windows 10以前,MAX_PATH的限制是260個字符。從Windows 10 1607版本開始,常見的Win32文件和目錄函數中刪除了MAX_PATH限制,可是必須啓用新的行爲。sql

3.2 默認MyISAM數據和索引文件最大到256TB,但此限制可改成最大65536TB

3.3 InnoDB的表大小限制:64T(取決於頁大小, 詳見下5)

4. MySQL數據庫的表個數:無限制(InnoDB容許40億個表)

MySQL對錶的數量沒有限制。數據庫

底層文件系統可能對錶示表的文件數量有限制。windows

單個存儲引擎可能會施加特定於引擎的約束: InnoDB容許多達40億個表函數

5. 綜上-總結InnoDB的限制

5.1 MySQL5.6之後容許InnoDB表最多1017個列

5.2 一個InnoDB表最多容許64個二級索引

5.3 默認索引前綴長度最多767bytes

5.4 聯合索引最多容許16個列, 多了報錯

5.5 InnoDB的最大行大小爲半頁(小於8K-默認)

因爲默認頁大小爲16K, 要求是小於half page size, 就是小於8K;spa

innodb_page_size能夠經過這個修改成4K, 8K; 這樣的話, rowsize 就限制爲小於 2K, 4K了;操作系統

雖然InnoDB內部支持大於65,535字節的行大小,但MySQL自己對全部列的合併大小施加了65,535的行大小限制。-?跨頁?另設置?

5.6 innoDB日誌文件的最大組合大小是512G

5.7 InnoDB表空間大小限制64T(表空間最大大小也是表的最大大小)

最小表空間大小略大於10MB日誌

最大表空間大小取決於InnoDB的頁面大小:code

InnoDB Page Size Maximum Tablespace Size
4KB 16TB
8KB 32TB
16KB 64TB

參考1: Limits on Table Column Count and Row Size

image.png

參考2: Limits on Table Size

相關文章
相關標籤/搜索