2016-11-10 23 views
0

我有一個應用程序在特定的innodb表中插入很多行,我不知道如何計算未來需要的磁盤空間。如何計算mysql innodb表中某行的磁盤空間使用率

因此,給定一個mysql innodb表結構,我該如何計算一行的磁盤空間成本?

+0

http://dev.mysql.com/doc/refman/5.7/en/innodb-physical-record.html – scaisEdge

+0

你不行。原因:你沒有向我們展示表格定義,如果你有可變長度的列(varchars,texts,blob) - 你無法確定平均長度是否準確。您最好的選擇是使用您現在擁有的數據計算平均長度。如果你到了可以填充幾百個演出的地步,你會遇到很多其他問題,而這些問題都不會是磁盤空間。 –

回答

1
  1. TINYINT消耗1個字節,INT:4個字節,BIGINT:8個字節,TEXT/BLOB/VARCHAR/VARBINARY:2+ 字節平均數,DATETIME和時間戳:5個字節,CHAR取全長等
  2. 根據表中的列添加它們。
  3. 倍數3(用於開銷,索引,BTree結構,浪費的空間等等)。這會給你一個InnoDB行的磁盤空間的原始估計值

注意事項:

  • 結果可能是高或低,但它是一個簡單的第一個猜測。
  • 表格最少需要16KB。
  • 過多的二級索引會導致更多空間消耗。
  • 大量的TEXT/BLOB可能會導致超出記錄的非記錄存儲容量。
  • 在表的增長過程中,分配單元從16KB切換到8MB,從而導致了大小的跳躍。
  • ROW_FORMAT有所不同。 (但COMPRESSED不太可能將表格縮小2倍以上。)
  • 尋找縮小UUID,IP地址等以節省空間的方法。
  • 請勿將utf8用於僅用於ascii的CHAR()字符串(country_code,hex等)。
+0

感謝您的答案 – Bogdan

相關問題