2016-08-16 52 views
3

任何人都知道的MySQL如何分配磁盤空間對於喜歡「TEXT」或「BLOB」的MySQL TEXT內存分配

例如字段,當我插入10KB串入「TEXT」列中會發生什麼?整個65kb數據分配還是隻有10kb?

+0

不要混淆限制和分配的空間。 'VARCHAR(255)'最多保存255個字符。有一些類型*做*保留空間,比如'CHAR',但這些都是例外。 – tadman

回答

4

此文檔中進行了說明:http://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

BLOB, TEXT    L + 2 bytes, where L < 2^16 
MEDIUMBLOB, MEDIUMTEXT L + 3 bytes, where L < 2^24 
LONGBLOB, LONGTEXT  L + 4 bytes, where L < 2^32 

可變長度字符串類型是使用長度前綴加上 數據存儲。長度前綴需要1到4個字節,具體取決於數據類型爲 ,前綴的值爲L(字符串的字節長度爲 )。例如,存儲MEDIUMTEXT值需要L 字節來存儲該值加上三個字節來存儲 值的長度。

所以總之,整個65kb沒有浪費。