MySQL,C++ - 以编程方式,MySQL自动增量如何工作?

Vol*_*ike 7 c c++ mysql architecture auto-increment

从MySQL的最新源代码(不确定它是C或C++),它如何进行自动增量?我的意思是,它是否有效,因为它像元数据资源一样存储在它最后停止的表上,或者它是否必须进行表扫描才能找到表中使用的最大ID?另外,当你看看它是如何实现的时候,你会看到使用自动增量的任何负面影响,比如PostgreSQL吗?

Joe*_*ath 2

这将取决于数据库使用的引擎。InnoDB将最大值存储在内存中而不是磁盘上。非常高效。我猜大多数引擎都会做类似的事情,但不能保证。

InnoDB 的自动增量将在加载 DB 并将变量存储在内存中时运行以下查询一次:

 SELECT MAX(ai_col) FROM t FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)

与PostgreSQL完全缺乏 auto_increment相比,这取决于您自己如何实现该字段。(至少我上次使用它时缺少它。它们可能已经改变)大多数人会创建一个SEQUENCE。它似乎存储在内存中的伪表中。我认为 InnoDB 是一种更简单、更好的方法。我猜如果它们不相等,InnoDB 会更高效。