C++ MySQL,C++;-在编程方面,MySQL Autoincrement是如何工作的?

C++ MySQL,C++;-在编程方面,MySQL Autoincrement是如何工作的?,c++,mysql,c,architecture,auto-increment,C++,Mysql,C,Architecture,Auto Increment,从MySQL的最新源代码(不确定是C还是C++)来看,它是如何实现自动增量的?我的意思是,它是否像元数据资源一样存储在上次停止的表上,或者它是否必须进行表扫描才能找到表中使用的最大ID?另外,当您查看autoincrement与PostgreSQL的实现方式时,您是否看到了使用autoincrement的任何负面影响?这取决于数据库使用的引擎。正在将最大值存储在内存中而不是磁盘上。效率很高。我猜大多数引擎都会做类似的事情,但不能保证 将在加载DB时运行以下查询一次,并将变量存储在内存中: SE

从MySQL的最新源代码(不确定是C还是C++)来看,它是如何实现自动增量的?我的意思是,它是否像元数据资源一样存储在上次停止的表上,或者它是否必须进行表扫描才能找到表中使用的最大ID?另外,当您查看autoincrement与PostgreSQL的实现方式时,您是否看到了使用autoincrement的任何负面影响?这取决于数据库使用的引擎。正在将最大值存储在内存中而不是磁盘上。效率很高。我猜大多数引擎都会做类似的事情,但不能保证

将在加载DB时运行以下查询一次,并将变量存储在内存中:

 SELECT MAX(ai_col) FROM t FOR UPDATE;

将其与完全缺乏自动增量相比取决于您自己如何实现该字段。(至少上次我用的时候它没有。他们可能已经改变了)大多数人会创造一个新的。它似乎存储在内存中的伪表中。我认为InnoDBs是一种更简单更好的方法。我想如果它们不相等,InnoDB会更有效率

你用的是哪种发动机?(例如InnoDB)好的,我想我读过InnoDB,当数据库加载时,它会查找最后一个序列,然后将其缓存在虚拟内存中,作为表元数据的一部分。谢谢