1. 列數量限制
mysql強制限定每張表最多4096列(字段),實際應用上會比它少。
影響列數量的幾個因素:
1)行長度
2)儲存引擎,資料型別和字符集 (如:innodb每個表的限制為1017列)
3)表結構定義檔案.frm (限制不能超過64kb)
2. 行大小限制
1)每張表限制最大行大小為65535個位元組(bytes),即使儲存引擎支援更大的行,blob和text列也只能占用9~12個位元組,因為他們內容與行其餘部分分開儲存。
2)innodb錶行大小依據資料庫頁(innodb_page_size [4kb, 8kb, 16kb, and 32kb]),例如:16kb頁面大小,最大行大小略小於8kb。
3)對於可變長型別列受限於innodb最大行大小,它會選擇可變長度列進行外部頁外儲存,直到改行適應innodb行大小限制。
4)不同的儲存格式使用不同數量的頁面頭部資料和尾部資料,這會影響行可用的儲存量
3. 示例
3.1 varchar 列長度限制
1)可變長度列的儲存包括長度大小占用的位元組,該長度位元組計入行大小。用1到2個位元組表示長度(長度超過255時需要2個位元組)
2)編碼長度
字元型別若為gbk,每個字元最多佔2個位元組
字元型別若為utf8,每個字元最多佔3個位元組
字元型別若為latin1,每個字元最多佔1個位元組
3)儲存引擎
4)空列(每增加乙個空列,占用乙個位元組)
[1] varchar(n) charset=gbk
max(length_n)=(65535-2)/2=32766
[2] varchar(n) charset=utf8
max(length_n)=(65535-2)/3=21844
[3] id int, name varchar(20), metric varchar(n), charset=utf8
-- int -> 4 ;varchar(20) -> 1 + 20 * 3
max(length_n)=(65535-4-1-20*3-2)/3=21822
4. 參考
double比較大小
參考 comparing floating point numbers 總結幾點 0.float佔4byte,精度是6 7位 double佔8byte,精度是15 16位。1.因為double型別或float型別都是有精度的,其實都是取的近似值,所以有個誤差。和乙個很小的數比如0.00000001 ...
1235 比較大小
比較大小 time limit 1000ms memory limit 65536k total submit 145 accepted 51 description 輸入兩個十進位制整數a,b,請判斷它們的大小關係。我們重新定義兩個數的大小比較規則為 誰的二進位制表示中含1的個數多誰大,若含1的個...
shell 比較大小
一 整數比較 eq 等於,如 if a eq b ne 不等於,如 if a ne b gt 大於,如 if a gt b ge 大於等於,如 if a ge b lt 小於,如 if a lt b le 小於等於,如 if a le b 大於 需要雙括號 如 a b 大於等於 需要雙括號 如 a ...