2

我有 30 个甚至更多的表,并且所有表的主键都设置为自动递增,所以每当我执行删除操作(如从 10 个表中删除 30 条记录)时,删除后 300 个内存单元将始终保持空白,因为主键设置为auto-increment。所以想想非常大的数据库的同样情况,那么如何解决这个问题并再次重用这些内存单元。

4

3 回答 3

1

主键不引用任何类型的“内存单元”,它只是一个计数器,为每一行提供一个唯一的数字。

理论上可以使用所有可能的键,但是我不确定 MySQL 是否会尝试使用已删除的旧值(它不应该)。但是考虑到未签名的 BIGINT 字段可以达到 18,446,744,073,709,551,615(18 quintillion),您不太可能遇到问题。

于 2013-04-03T05:49:32.450 回答
1

好吧,它已经自动递增了,所以你无法帮助它。这没有内存浪费。

于 2013-04-05T09:29:39.827 回答
0

自动增量只是一个计数器。它与记忆无关。PK 列不是完整的数学系列这一事实与性能完全无关。delete 唯一影响的是回滚日志。如果您要删除表中的所有数据,最好将其截断。

mysql内存模型很复杂。有关概述,您可以查看 mysql 开发文档中的这篇文章

于 2013-04-03T06:32:18.393 回答