c++ - MySQL, C++ - 以编程方式,MySQL Autoincrement 如何工作?

标签 c++ mysql c architecture auto-increment

从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/

相关文章:

c - 如何通过 system() 使用命令行变量?

c++ - 从 python 中提取类

c++ - 不能(隐式地)从 char** 转换为 const char**?

php - 如何从mysql表中获取数组的单个值并在搜索中使用

mysql - Fun with MySQL - 如何使用 IN 编写删除语句

java - 从jsp View 中删除。删除行时无法获取表 ID

c - 我在执行代码时收到段错误。有什么问题吗?

c++ - 重建仅知道其名称和参数列表的函数的签名

c++ - 如何使用内联汇编模拟以下 C++ 代码?

未在文本文件中捕获段错误标准输出重定向时的 C 程序