2011-06-27 40 views
6

我使用InnoDB的插件在梭子魚的文件格式有:MySQL/InnoDB插件:VARCHAR字段的NULL值是否仍佔用存儲空間?

ROW_FORMAT=DYNAMIC

如果我字段定義爲VARCHAR(255),然後插入具有該字段的NULL值的記錄,將這一記錄仍然在存儲中使用255字節的VARCHAR字段?或者會不會有浪費的存儲空間?

在相關說明中,如果我將字段定義爲INT,那麼即使其值爲NULL,也可能每個記錄仍使用該字段的32位。那是對的嗎?

感謝

回答

6

我想這應該回答你的問題 -

的SQL NULL值保留一個或備案目錄中的兩個字節。除此之外,如果存儲在可變長度列中,則SQL NULL值在記錄的數據部分保留零字節。在固定長度的列中,它在記錄的數據部分中保留列的固定長度。爲NULL值保留固定空間使得能夠將列從NULL更新爲非NULL值,而不導致索引頁的碎片化。

請在data-type storage requirementsInnoDB physical row structure

相關問題