如何计算mysql innodb表中行的磁盘空间使用情况

时间:2016-11-10 08:14:08

标签: mysql innodb

我有一个应用程序在特定的innodb表中插入了很多行,我不知道如何计算将来所需的磁盘空间。

所以给定一个mysql innodb表结构,如何计算一行的磁盘空间成本呢?

1 个答案:

答案 0 :(得分:2)

  1. TINYINT消耗1个字节,INT:4个字节,BIGINT:8个字节,TEXT / BLOB / VARCHAR / VARBINARY:2+平均字节数,DATETIME和TIMESTAMP:5个字节,CHAR取全长等
  2. 根据表格中的列添加它们。
  3. 多个3(用于开销,索引,BTree结构,浪费空间等)。这将为您提供InnoDB行的磁盘空间的粗略估计
  4. 注意事项:

    • 结果可能高或低,但这是一个简单的猜测。
    • 表格至少需要16KB。
    • 过多的二级索引会导致更多的空间消耗。
    • 许多TEXT / BLOB可能导致可能超出论坛的非记录存储。
    • 在表格增长期间的某个时刻,分配单元从16KB切换到8MB,从而导致令人不安的跳跃。
    • ROW_FORMAT有所不同。 (但COMPRESSED不太可能使表格缩小2倍以上。)
    • 寻找缩小UUID,IP地址等的方法,以节省空间。
    • 不要将utf8用于ascii-only CHAR()字符串(country_code,hex等)。