考虑到某些列是 varchars 的事实,我想知道是否有一种方法可以测量磁盘上一定数量的行占用的字节数。
非常感谢,
弗拉德
要测量磁盘上的行占用的字节数,您必须知道每种数据类型需要多少磁盘空间。
文档:
数据类型存储要求
CHAR 和 VARCHAR 类型
示例:
一个表由 2 个字段(一个 BIGINT 字段和一个 VARCHAR(400) 字段)组成。BIGINT 字段将始终使用 8 个字节。VARCHAR 字段使用 2 个字节 + 实际存储的字符数。
因此,如果一条记录存储 300 个字符,则该记录使用的总字节数将为:8+2+300 = 310 字节
与 CHAR 相比,VARCHAR 值存储为 1 字节或 2 字节长度前缀加上数据。长度前缀表示值中的字节数。如果值需要不超过 255 个字节,则一列使用一个长度字节,如果值可能需要超过 255 个字节,则使用两个长度字节。
阅读InnoDB 中记录的物理结构和我的InnoDB系列中的其他文章可能很有用。如果您提供了表架构(来自SHOW CREATE TABLE
),我也很乐意以它为例。不幸的是,实际上没有办法测量 MySQL 中内置的物理行大小。