gpt4 book ai didi

mysql - 为什么我的 table 尺寸比预期大 4 倍以上? (行*字节/行)

转载 作者:可可西里 更新时间:2023-11-01 06:46:09 26 4
gpt4 key购买 nike

我正在查看 MySQL 中的一个简单表,它有 4 列,大小如下,

unsigned bigint (8 bytes)
unsigned bigint (8 bytes)
unsigned smallint (2 bytes)
unsigned tinyint (1 byte)

所以我希望每行 19 个字节。

此表中有 1,654,150 行,因此数据大小应为 31,428,850 字节(或约 30 兆字节)。

但我可以通过 phpMyAdmin 看到数据占用了 136.3 MiB(不包括 bigint 1, smallint, tinyint 上的索引大小,即 79 MiB)。

存储引擎是 InnoDB,主键是 bigint 1, bigint 2(一个用户 ID 和一个唯一的项目 ID)。


编辑:按照评论中的要求,这是SHOW CREATE TABLE storage

的结果
CREATE TABLE `storage` (
`fbid` bigint(20) unsigned NOT NULL,
`unique_id` bigint(20) unsigned NOT NULL,
`collection_id` smallint(5) unsigned NOT NULL,
`egg_id` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`fbid`,`unique_id`),
KEY `fbid` (`fbid`,`collection_id`,`egg_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

最佳答案

如果表经常进行插入/删除/更新,您可能想尝试运行 OPTIMIZE TABLE 查询以查看表可以缩小多少。数据文件中可能存在碎片整理和未使用的空间。

phpmyadmin 显示的数据大小与您在这里所期望的不同。当您第一次创建表时,您会看到它不会显示数据使用情况:0。它将是 16KB 或 32KB 或其他。插入记录时大小不会改变。这就是 innoDB 如何像它想象的那样高效地控制表文件。

检查 SHOW TABLE STATUS FROM {db_name} 并查看表中每一行的 Avg_row_length 有多少。也不会是19字节

关于mysql - 为什么我的 table 尺寸比预期大 4 倍以上? (行*字节/行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com