从MySQL的最新源码(不确定是C还是C++)看,它是如何自增的?我的意思是,它是否有效,因为它像元数据资源一样存储在上次停止的表上,还是必须进行表扫描才能找到表中使用的最大 ID?此外,当您查看自动增量与 PostgreSQL 的实现方式相比时,您是否看到使用自动增量的任何负面影响?
最佳答案
这将取决于数据库使用的引擎。 InnoDB将最大值存储在内存中而不是磁盘上。非常有效率。我猜大多数引擎都会做类似的事情,但不能保证。
InnoDB's Auto Increment将在加载数据库并将变量存储在内存中时运行以下查询:
SELECT MAX(ai_col) FROM t FOR UPDATE;
将其与 PostgreSQL 进行比较完全缺少 auto_increment 取决于您自己如何实现该字段。 (至少我上次使用它时它没有。它们可能已经改变)大多数会创建一个 SEQUENCE .这似乎存储在内存伪表中。我认为 InnoDBs 是一种更简单更好的方法。我想如果它们不相等,InnoDB 会更有效率。
关于c++ - MySQL, C++ - 以编程方式,MySQL Autoincrement 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023119/