mysql的varchar最大值是多少_MySQL varchar计算:求列的数额和计算N的最大值
mysql varchar計算:求列的數目和計算N的最大值
有道面試題:若一張表中只有一個字段VARCHAR(N)類型,utf8編碼,則N最大值為多少?
先明白計算的一些規則限制
① 存儲限制
需要額外地在長度列表上存放實際的字符長度:小于255為1個字節,大于255則要2個字節
② 編碼限制
gbk:每個字符最多占用2個字節
utf8:每個字符最多占用3個字節
③ 長度限制
MySQL定義行的長度不能超過65535,這個限制了列的數目,比如char(255) utf8
那么列的數目最多有65535/(255*3)=85,列的數目可以從這里得到依據
行長度計算公式如下:
row length = 1
+ (sum of column lengths)
+ (number of NULL columns + delete_flag + 7)/8
+ (number of variable-length columns)
① 對于MyISAM,需要額外1個位來記錄值是否為NULL;對于InnoDB,沒有區別
② 對于row_format為fixed,delete_flag為1;對于row_format=dynamic,delete_flag為0
根據這個公式,我們便能夠解答開頭N的最大值:(65535-1-2)/3
減1是因為實際存儲從第2個字節開始
減2則因為要在列表長度存儲實際字符長度
除3是因為utf8編碼限制
再來一道:
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;
N的最大值:(65535-1-2-4-30*3)/3
參考資料
http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
http://dinglin.iteye.com/blog/914276
By 迦夜
2013-10-21
Good Luck
微信 賞一包辣條吧~
支付寶 賞一聽可樂吧~
總結
以上是生活随笔為你收集整理的mysql的varchar最大值是多少_MySQL varchar计算:求列的数额和计算N的最大值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java程序的最小程序单位_微信小程序中
- 下一篇: php join a.id b.id,m