MySQL5 6Innodb表的特性和極限

2021-07-24 02:02:11 字數 1736 閱讀 7794

innodb表限制:(詳見mysql官網

1.單錶最多1017個字段。

2.但表最多可建64個普通索引。

3.預設情況下(innodb_page_size=16k),字首索引最多包含767個位元組。如果開啟innodb_large_prefix,且innodb表的儲存格式為 dynamic 或 compressed,則字首索引最多可包含3072個位元組,字首索引也同樣適用。

4.乙個索引最多允許包含16個字段,如果減小資料頁的大小,則索引允許的最大位元組數也按比例縮小。

5.每行允許的最大長度略小於資料頁的一半(包含變長字段的行除外),資料頁大小為16k的情況下,每行允許的最大長度為8000位元組。如果減小資料頁的大小,則沒行允許的最大位元組數也按比例縮小。

longblob 和 longtext型別的字段最大長度必須小於4g,總的字段長度,包括longblob 和 longtext型別字段在內,必須小於4g。

6.如果每行的長度小於半個資料頁(8k,預設資料頁大小為16k),則該行全部儲存在乙個資料頁內,如果超過半頁,可變長字段被移到外部的離線頁儲存,直到剩下的字段能儲存在半個資料頁內。

7.雖然innodb內部支援行大小超過65535位元組,mysql會強制限制所有列的大小為65535.

8.log組所有log總大小最大為512g

9.最小表空間略大於10m,最大表空間大小為64t位元組,這也是單錶最大大小。

10.innodb的資料頁大小在建立mysql例項時指定,指定後不能更改。預設資料頁大小為16k,資料頁超過16k,mysql官方不做保證

11.在索引中包含自增列,這樣可通過查詢索引獲得最大的自增值,而不需要做全部掃瞄。通常做法是把自增列定義索引的第一列。

12.當修改自增列時,,innodb會在與自增列相關連的索引尾部設定互斥鎖。分三中情況:

1)innodb_autoinc_lock_mode=0

時,sql語句訪問自增計數器時,該sql語句會持有鎖直至語句完成,在此期間,其它會話無法對錶進行插入操作。

2)innodb_autoinc_lock_mode=1

時,如果當前事務在執行批量插入(bulk inserts),則其它會話無法對錶進行插入操作。

3)innodb_autoinc_lock_mode=2時,當前事務不持有鎖,其它事務可以正常執行插入操作。

13.重啟mysql服務後,如果自增值沒有儲存,則innodb可能會使用舊的自增值。

14.自增值超過最大值後,後續的插入操作會報duplicate-key錯誤。

15.不加條件的delete操作不會重建表,而是一行行刪除表中的記錄。

16.銷毀外來鍵不會觸發觸發器。

關於鎖:

17.預設情況下(innodb_table_locks=1),執行lock tables

操作會在相應的表上施加msyql表鎖和innodb表鎖。如果沒有innodb表鎖,則在其它事務鎖表的情況下,也能完成對該錶的鎖定。

mysql5.6版本中,innodb_table_locks=0時對明確指定lock tables ... write的鎖表操作沒影響。

18.所有innodb 表鎖在事務提交或回滾後被立即釋放,當事務處於自動提交模式(autocommit=1)時,不會呼叫 lock tables命令進行鎖表操作。

19.mysql5.5之前,最多允許1023個dml事務,自5.6之後,最大dml事務提公升為128 * 1023。

MYSQL 5 6中禁用INNODB引擎

並不是所有人都需要innodb引擎,雖然它彌補了mysql缺乏事務支援的毛病,但是它的磁碟效能一直是讓人比較擔憂的。另外比較老的php系統,大多是採用myisam引擎在mysql建表,似乎innodb根本用不上場,這時候可以考慮將innodb禁掉。在mysql 5.6中,直接skip innodb前...

MYSQL 5 6中禁用INNODB引擎

並不是所有人都需要innodb引擎,雖然它彌補了mysql缺乏事務支援的毛病,但是它的磁碟效能一直是讓人比較擔憂的。另外比較老的php系統,大多是採用myisam引擎在mysql建表,似乎innodb根本用不上場,這時候可以考慮將innodb禁掉。在mysql 5.6中,直接skip innodb前...

MySQL原理 InnoDB表的限制

本文基於mysql 5.7 目前oltp業務的表如果是使用mysql一般都會使用innodb引擎,這也是預設的表引擎。那麼這種引擎有什麼限制呢?根據官方文件總結下 參考 參考 關於innodb page size這個資料庫例項初始化配置 innodb page size是乙個初始化資料庫例項的引數,...