2010-12-21 37 views
3

我想知道是否有mysql命令來確定mysql字段當前使用的實際存儲大小。mysql決定一個字段的存儲大小

也許像 「秀USED_STORAGE MyField的FROM ... WHERE ...」

奇怪的是我發現couln'd這樣的事。

(同爲PostgreSQL的未免太interessting)

非常感謝!

+0

這個問題將是兩個不同的問題更加有用。 – 2010-12-21 21:05:28

+0

是的,你是對的,我也考慮過這個問題,但後來我認爲能夠看到它在兩個系統上的工作原理是很好的。 雖然主要關注於mysql,但postgres對我來說只是FYI) – 2010-12-23 09:00:14

回答

1

如果您使用的是字符數據字段,最簡單的是

SELECT SUM(LENGTH(myField)) From MyTable 

如果您使用的是某種數字數據類型,您可以對行進行計數,然後將其乘以大小,例如4爲INTEGER,或8爲DOUBLE。

但它不會反映在磁盤上佔用的實際大小。這可能更難以發現。即使它是準確的,由於碎片和其他因素,表格的實際大小可能遠遠大於所有列的總大小。

你可以得到整個表的大小(和索引的大小)與:

SHOW TABLE STATUS LIKE 'MyTable'; 

如果複製出來只是要一個新的臨時表中的列,你可能能夠獲得更現實的觀點你的領域實際上在磁盤上佔用了多少空間。

+0

感謝您的回答! 但我更多地尋找一個能讓我看到「真實」空間需求的命令。 例如,對於longtext字段,使用了4個字節,不管你存儲了多少字節。此外,如果值很大,則數據將存儲在外部,並且列中還會保留大約700個字節。 這意味着整個尺寸將超過內容的實際尺寸。 這是我正在尋找的價值。 – 2010-12-23 08:54:56