tika设置文件长度限制_MySQLInnoDB某些你没注意过的限制
01
—
目錄
02
—
前言
最近一個朋友遇到一個面試題:MySQL的InnoDB的一個表最多能存多少數(shù)據(jù)?這么一問,我瞬間也蒙圈了,這是我的知識盲區(qū)啊,之前還從來沒考慮過這樣的問題。那我怎么能甘心的,只好去網(wǎng)上一頓查資料,下面我就分享一下我查到的結(jié)果。版本Mysql8.0。03
—
表的最大大小
表的最大大小也是表空間的最大大小。最小表空間大小略大于10MB。最大表空間大小取決于 InnoDB頁面大小。| 4KB | 16TB |
| 8KB | 32TB |
| 16KB | 64TB |
| 32KB | 128TB |
| 64KB | 256TB |
04
—
列的最大數(shù)量
這是一個坑點!為什么這么說?因為InnoDB的限制和MySQL的限制不一樣!!!InnoDB一個表最多可以包含1017列。虛擬生成的列包含在此限制中。
MySQL對每個表有4096列的硬限制,但是對于給定的表,有效最大值可能會更少。確切的列限制取決于幾個因素:
看著頭都大了。。。
一個表的最大行大小限制了列的數(shù)量(可能還有大小),因為所有列的總長度不能超過該大小。
單個列的存儲要求限制了給定最大行大小內(nèi)的列數(shù)。某些數(shù)據(jù)類型的存儲要求取決于存儲引擎,存儲格式和字符集等因素。
存儲引擎可能會施加其他限制表列計數(shù)的限制。例如, InnoDB每個表的限制為1017列。
功能鍵部分被實現(xiàn)為隱藏的虛擬生成的存儲列,因此表索引中的每個功能鍵部分都計入表的總列數(shù)限制。
05
—
行大小限制
給定表的最大行大小由幾個因素決定:
MySQL表的內(nèi)部表示具有65,535字節(jié)的最大行大小限制,即使存儲引擎能夠支持更大的行也是如此。BLOB和 TEXT列僅有助于朝向行大小限制9?12字節(jié),因為它們的內(nèi)容是從該行的其余部分分開存儲。
InnoDB 對于4KB,8KB,16KB和32KB innodb_page_size設置,表 的最大行大小(適用于本地存儲在數(shù)據(jù)庫頁面內(nèi)的數(shù)據(jù))略小于頁面的一半 。例如,對于默認的16KB InnoDB頁面大小,最大行大小略小于8KB 。對于64KB頁面,最大行大小略小于16KB。LONGBLOB和 LONGTEXT列必須小于4GB,并且總行大小(包括BLOB和 TEXT列)必須小于4GB。
不同的存儲格式使用不同數(shù)量的頁面標題和尾部數(shù)據(jù),這會影響行可用的存儲量。
行大小限制示例:
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 usedtable type, not counting BLOBs, is 65535. This includes storage overhead,check the manual. You have to change some columns to TEXT or BLOBs該InnoDB 表的操作成功,因為更改列 TEXT可以避免MySQL 65,535字節(jié)的行大小限制,而InnoDB 變長列的頁外存儲可以避免 InnoDB行大小限制。mysql> CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000), c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), f VARCHAR(10000), g TEXT(6000)) ENGINE=InnoDB CHARACTER SET latin1;Query OK, 0 rows affected (0.02 sec)06
—
索引限制
InnoDB一個表最多可以包含64個二級索引。
對于InnoDB使用表DYNAMIC(MySQL8.0默認行格式)或 COMPRESSED行格式的表, 索引鍵前綴長度限制為3072字節(jié) 。
對于使用REDUNDANT或COMPACT行格式的InnoDB表,索引鍵前綴長度限制為767個字節(jié)。例如,假設utf8mb4字符集且每個字符最多4個字節(jié),則您可能在TEXT或VARCHAR列上使用超過191個字符的列前綴索引來達到此限制。
嘗試使用超出限制的索引鍵前綴長度將返回錯誤。
如果在創(chuàng)建MySQL實例時通過指定選項將InnoDB 頁面大小減小到8KB或4KB innodb_page_size,則基于16KB頁面大小的3072個字節(jié)的限制,按比例減小索引鍵的最大長度。即,當頁面大小為8KB時,最大索引鍵長度為1536字節(jié),而當頁面大小為4KB時,最大索引鍵長度為768字節(jié)。
適用于索引鍵前綴的限制也適用于全列索引鍵。
多列索引最多允許16列。超過限制將返回錯誤。
07
—
結(jié)語
這些限制平時真的是沒接觸過,不過居然有人面試會問這個東西,想想都很可怕。
內(nèi)容都來自MySQL官網(wǎng)~感興趣的可以去點擊“查看原文”去官網(wǎng)看。不得不說,官網(wǎng)的資料是真全啊,就是看完之后發(fā)現(xiàn)自己對MySQL其實是一無所知。。。如有錯誤,歡迎指出。
???歡迎大家關注我的個人技術分享公眾號,可以推薦身邊的朋友關注哦~
點此留言
總結(jié)
以上是生活随笔為你收集整理的tika设置文件长度限制_MySQLInnoDB某些你没注意过的限制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell两个时间字符串插值_Shell
- 下一篇: python循环一百次_python循环