2017-09-04 43 views
1

我是使用mysql數據庫的begginer。我試圖將用戶數據保存在一個大的Json文件中,在最壞的情況下,它的大小約爲5Mb,顯然我應該使用LARGE TEXT,但我想知道11Mb其餘部分會發生什麼。它被浪費了嗎?在mysql中的數據類型大小和存儲

回答

1

不,MySQL只根據具體情況存儲您需要的數據。也就是說,如果你的JSON在一行上是5MB,你需要使用MEDIUMTEXT,但它只能存儲5MB,而不是16MB。如果JSON在下一行只有42KB,那隻會存儲42KB。這是可變的存儲。

嗯,空間有一點「四捨五入」,因爲整個16KB頁面中的空間分配高達半個MB,然後BLOB/TEXT文檔一次佔用1MB一半以上的MB空間。但我不擔心這一點。

MySQL中的所有可變長度數據類型都以這種方式工作。 VARCHAR,VARBINARY,TEXT,BLOB以及所有不同類型的TEXT和BLOB。

即使您不需要它,CHAR和BINARY也會存儲全長。所以當你所有的字符串長度相同時,最好使用這些類型。

+0

謝謝Bill Karwin – Satya

1

對於數據類型存儲InnoDB的數據庫,你可以參考壽這個MySQL文檔鏈接 https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html 本質上,你可以存儲數據與這些維 假設L是你的領域/文件尺寸

TINYBLOB, TINYTEXT L < 2^8 (2^8 - 1 byte) 
BLOB, TEXT   L < 2^16 (2^16 - 2 bytes) 
MEDIUMBLOB, MEDIUMTEXT L < 2^24 (2^24 -3 bytes) 
LONGBLOB, LONGTEXT L < 2^32 (2^32 - 4 bytes) 

所以你11 MB文件,您可以再次使用MEDIUMTEXT

+0

如果有一天有機會超過11MB,那麼你可以把它做成'LONGTEXT'。 –