从MySQL的最新源代码(不确定是C或C ++),它如何进行自动增量?我的意思是,它是否有效,因为它像元数据资源一样存储在它最后停止的表上,或者它是否必须进行表扫描才能找到表中使用的最大ID?另外,当你看看它是如何实现的时候,你会看到使用自动增量的任何负面影响,比如PostgreSQL吗?
答案 0 :(得分:2)
这取决于数据库使用的引擎。 InnoDB将最大值存储在内存中,而不是存储在磁盘上。效率很高。我猜大多数引擎会做类似的事情,但不能保证。
InnoDB's Auto Increment加载数据库后,将运行以下查询并将变量存储在内存中:
SELECT MAX(ai_col) FROM t FOR UPDATE;
将此与PostgreSQL进行比较完全缺少auto_increment取决于您自己如何实现该字段。 (至少上次我使用它时缺少它。它们可能已经改变了)大多数会创建一个SEQUENCE。它似乎存储在内存伪表中。我会把InnoDBs变成一种更简单的方法。我猜想InnoDB如果不相等会更有效率。