GreatSQL社区

搜索

[讨论中] 好奇怪啊,为什么 alter table ... 后,还会有碎片?

378 4 2025-3-11 13:39
好奇怪啊,alter table 好多次了,mysql碎片依然存在?



全部回复(4)
yejr 2025-3-11 13:45:51
这是正常的,因为innodb page是以16kb为单位,而且还有约1/16的预留,不是全部填满。
  1. >>> 5242880/1154465792.0
  2. 0.004541390517008926
复制代码

而且你看上面这个计算结果,这是事嘛。。。
reddey 2025-3-11 14:08:10
yejr 发表于 2025-3-11 13:45
这是正常的,因为innodb page是以16kb为单位,而且还有约1/16的预留,不是全部填满。

而且你看上面这个计 ...

这些碎片不是马上消失的,也是统一回收整理的吗?
一个学艺不精的国产数据库爱好者
蒋士峰 2025-3-11 14:11:29
yejr 发表于 2025-3-11 13:45
这是正常的,因为innodb page是以16kb为单位,而且还有约1/16的预留,不是全部填满。

而且你看上面这个计 ...

我刚刚计算了,1/16 的结果是  0.0625  。而  5242880/1154465792 的结果是 0.00454139052 。这样说来,好像用 innodb page 的 1/16 来解释有点说不通吧。并且 我们本地环境的 innodb page 为 16k, 1/16 也就是1024,但是现在 为 5242880
yejr 2025-3-11 14:21:59
蒋士峰 发表于 2025-3-11 14:11
我刚刚计算了,1/16 的结果是  0.0625  。而  5242880/1154465792 的结果是 0.00454139052 。这样说来, ...

是至少预留1/16,不是每个page都正好1/16,有的可能不止,这个要取决于各个表中各列数据的类型和实际长度

另外,show table status里看到的数据也只是概数,不是确切数

想要看确切数,可以用innblock工具分析,参考 https://mp.weixin.qq.com/s/yfi5XikDJlh6-nS-eoJbcA
蒋士峰

2

主题

0

博客

8

贡献

新手上路

Rank: 1

积分
14

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-4-2 01:06 , Processed in 0.030780 second(s), 13 queries , Redis On.
快速回复 返回顶部 返回列表