<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
MySQL對於每個表的欄位數量是嚴格控制在4096個,但是實際情況下的限制大小取決於以下因素(也就是基本達不到4096就被限制了):
row size
會限制欄位數量,如果當前row size
過大就不能加欄位了Innodb
最大欄位數量為1017.frm
的表定義檔案,表定義可能會影響欄位數量大小row size由以下因素影響:
row size
有硬性規定,不能超過65535bytes
,即使儲存引擎允許更大的size. 而BLOB
和TEXT
型別列只佔行的9到12個位元組,具體儲存地方不在該行裡;但是其他的比如varchar
還是算在行裡的,這裡要注意Innodb
儲存引擎對於每行的大小一般限制為頁大小的一半:頁16KB,row size 8KB。另外對於不定長型別也有不同:If a row containing variable-length columns exceeds the InnoDB maximum row size, InnoDB selects variable-length columns for external off-page storage until the row fits within the InnoDB row size limit. The amount of data stored locally for variable-length columns that are stored off-page differs by row format. For more information, see InnoDB Row Formats.簡單來說就是,對於像varchar
這種不定長型別,如果這種型別長度超過了Innodb
儲存引擎規定的row size
,那麼Innodb會選擇頁外儲存直到行大小符合Innodb
儲存引擎規定的row size
。(但是即使這樣也不能超過65535B,即65535B是包含不定長列中的內容的長度)mysql> CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000), c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), f VARCHAR(10000), g VARCHAR(6000)) ENGINE=InnoDB CHARACTER SET latin1; ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
看,由於Latin1
編碼1個字元是1個位元組,總共不能超過65535個字元,超過就報錯;而常用的utf8mb4
編碼最多1個字元佔用4個位元組,所以當使用utf8mb4
編碼時,最多隻能有65535/4=16383
個字元(實際測肯定會小點,因為還有位元組去記錄變長欄位長度):
test> CREATE TABLE t (a VARCHAR(10000), b VARCHAR(6384) ) ENGINE=InnoDB CHARACTER SET utf8mb4 [2022-07-21 15:05:56] [42000][1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs test> CREATE TABLE t (a VARCHAR(10000), b VARCHAR(6383) ) ENGINE=InnoDB CHARACTER SET utf8mb4 [2022-07-21 15:09:51] [42000][1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs test> CREATE TABLE t (a VARCHAR(10000), b VARCHAR(6382) ) ENGINE=InnoDB CHARACTER SET utf8mb4 [2022-07-21 15:09:58] completed in 33 ms
根據提示,如果超過row size
限制,可以使用TEXT or BLOBs
型別,這個在row size
中只佔用9到12個位元組。
65535B的限制主要針對不定長型別的限制,而定長型別的限制更為嚴格,像在Innodb儲存引擎中,只能達到8KB多也就是頁大小的一半(可以修改)。
innodb_strict_mode is enabled in the following example to ensure that InnoDB returns an error if the defined columns exceed the InnoDB row size limit. When innodb_strict_mode is disabled (the default), creating a table that uses REDUNDANT or COMPACT row format succeeds with a warning if the InnoDB row size limit is exceeded.
mysql> SET SESSION innodb_strict_mode=1; mysql> CREATE TABLE t4 ( c1 CHAR(255),c2 CHAR(255),c3 CHAR(255), c4 CHAR(255),c5 CHAR(255),c6 CHAR(255), c7 CHAR(255),c8 CHAR(255),c9 CHAR(255), c10 CHAR(255),c11 CHAR(255),c12 CHAR(255), c13 CHAR(255),c14 CHAR(255),c15 CHAR(255), c16 CHAR(255),c17 CHAR(255),c18 CHAR(255), c19 CHAR(255),c20 CHAR(255),c21 CHAR(255), c22 CHAR(255),c23 CHAR(255),c24 CHAR(255), c25 CHAR(255),c26 CHAR(255),c27 CHAR(255), c28 CHAR(255),c29 CHAR(255),c30 CHAR(255), c31 CHAR(255),c32 CHAR(255),c33 CHAR(255) ) ENGINE=InnoDB ROW_FORMAT=COMPACT DEFAULT CHARSET latin1; ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
Row Limits 一般為 MySQL本身65535B限制和儲存引擎8126B限制(預設Innodb)。
varchar
,一般首先收到限制的是MySQL本身65535B的限制。受不到儲存引擎限制是因為,不定長型別如果長度超過8126B,會採用頁外儲存,也就是不定長型別的長度過長的話計入65535B而不計入8126B(大致可以這麼理解)。到此這篇關於MySQL表欄位數量限制及行大小限制詳情的文章就介紹到這了,更多相關MySQL行大小限制內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45