2013-01-10 64 views
0

我想將一些xml保存到我的mysql數據庫中。但是這些xml塊可以在1000到1000000個字符之間變化。我怎樣才能保存到我的數據庫中,而不保留每個字符串100KB,即使它只有1kb長?如何存儲大字符串節省空間

編輯:

我已經檢查http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html 他們說,文本存儲在的2000個字符塊。有趣的是,將MEDIUMTEXT更改爲LONGTEXT將22kb改爲100kb。文本大小是一樣的,所以它應該保持在4000b左右(4kb)

你知道爲什麼會發生這種情況,以及如何防止它?

回答

2

MySQL的變長字符串類型只分配存儲數據所需的空間(及其長度)。在你的情況下,你需要MEDIUMTEXT類型能夠存儲多達1000000個字符。

+0

爲什麼不'varchar'? –

+1

@JanDvorak:'VARCHAR'最多隻能存儲16KiB,而1000000個字符即使是單字節編碼也需要1MiB。 – eggyal

+0

我測試過了。我設置MEDIUMTEXT和3K字符的文本需要在數據庫中的22kb存儲... 當我將數據類型更改爲TEXT時,它的大小顯着減少,無裁剪。 – Kostronor