MySQL auto_increment步长是如何确定的

2024-04-11

我有一个网页表,主键作为 URL 的哈希值,还有一个 auto_increment ID 列,它也是一个唯一键。

我有点困惑的是为什么连续插入不会将 ID 字段增加 1。当我第一次创建表并执行一次插入时,第一个 id 是 1。第二次插入生成的 id 为 5,并且第三个是8。

我在表上有一个触发器,它在插入时计算网页 URL 的哈希值。不确定这是否相关。

有间隙不是问题,但我想了解为什么连续插入不会生成步长为 1 的 ID。

thanks!


关于为什么会发生这种情况的几个建议:

See 自动增量增量 http://dev.mysql.com/doc/refman/5.1/en/replication-options-master.html#sysvar_auto_increment_increment。这控制在 INSERT 期间每次请求新值时的增量。

另外,如果您在 MySQL 5.1 中使用 InnoDB 表,它们优化自动增量分配 http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html以便它锁定表的持续时间较短。这对于并发性很有好处,但如果行的 INSERT 与另一个约束(例如辅助 UNIQUE 列或外键)冲突,它也可能“丢失”自动增量值。在这些情况下,分配的 auto-inc 值不会被推回到队列中,因为我们假设另一个并发线程可能已经分配了下一个 auto-inc 值。

当然,也会发生回滚,在这种情况下,可能会分配自动增量值,但会被丢弃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL auto_increment步长是如何确定的 的相关文章

随机推荐

  • 对 stdin、stdout 和 stderr 感到困惑吗?

    我对这三个文件的用途感到相当困惑 如果我的理解是正确的话stdin是程序写入其请求以在进程中运行任务的文件 stdout是内核将其输出写入其中的文件 并且请求它的进程从中访问信息 并且stderr是输入所有异常的文件 在打开这些文件以检查这
  • x86 部分寄存器使用

    如果我在 8 位寄存器中保存一个值 比如说 10DH然后是 8 位寄存器中的另一个值 15DL 这会起作用吗 或者它们会互相覆盖吗 因为它们都是 32 位的EDX登记 mov 10 DH mov 15 DL cmp DL DH jle do
  • jQuery $.ajax 无提示失败,没有错误消息,服务器响应 200 OK

    我正要认真思考这个问题 我使用非常简单的 jQuery ajax 调用从数据库获取值 并用这些值填充一些选择元素 所有这些都以 JSON 形式返回 它在大多数浏览器上对我来说都是无缝工作的 但是客户报告说他们和他们的客户都没有看到结果 我一
  • Android RemoteServiceException:从包发布的错误通知无法缓存 contentViews

    我有一个 Android 应用程序由于未处理的异常而崩溃 但仅限于一台特定设备 运行 Nougat 我相信他们是我的测试人员中唯一一位运行牛轧糖的人 这是例外 Java Lang RuntimeException 从包 我的 包名称 无法缓
  • C/C++ 中 pow() 函数的实现是否因平台或编译器而异?

    花了一天时间调试内置的pow 函数的输出 我的编译器和在线编译器的输出不同 那是一个很长的故事 我写了以下内容最小 完整且可验证的示例 https stackoverflow com help mcve重现情况 Code include
  • 在 angularjs 中创建容器指令

    因此 我尝试创建一个指令来布局列中的项目集合 在 plunker 中 我有一个极其简化的版本 仅使用单个 ul 但这并不重要 我希望该指令被称为像
  • 使用pyspark获取列的数据类型

    我们正在从 MongoDB 读取数据Collection Collection列有两个不同的值 例如 bson Int64 int int float 我正在尝试使用 pyspark 获取数据类型 我的问题是某些列具有不同的数据类型 Ass
  • Nginx:如何仅将主域与 server_name 匹配

    我的目标是重定向example com into www example com不重定向any子域到www 这就是我所拥有的 server listen 443 server name example com return 301 http
  • 使用 Phonegap 安装 Cordova 插件 - 无 Cordova.plist

    我正在尝试为我的应用程序安装一个插件 运行良好 该插件使用 Cordova 和 PhoneGap 框架在 XCode 中编译 根据插件的说明 我应该添加一个密钥Cordova plist文件 但我在我的层次结构中找不到它 这是我的 XCod
  • 如何使用 pincode 作为输入查找纬度和经度列表

    有什么方法可以使用 zip pincode 找到纬度和经度列表吗 Input 560103 Output 12 123456 72 123456 12 123654 72 366666 12 123456 72 123456 on goog
  • 用于将 DataTable 替换为集合的最佳 C# 泛型类?

    我正在尝试将遗留的 C NET 1 1 应用程序带入现代时代 我们使用 DataTable 来收集可能是业务对象的内容 鉴于大多数代码认为它正在与 DataRow 的接口进行通信 那么哪种通用集合可以实现最不痛苦的转换 如果我正确地阅读了您
  • std::stack 是否公开迭代器?

    是否std stack在 C STL 中公开底层容器的任何迭代器 还是应该直接使用该容器 根据堆栈的定义 堆栈没有迭代器 如果您需要带有迭代器的堆栈 则需要自己在其他容器 std list std vector 等 之上实现它 堆栈文档在这
  • Python 导入:导入不带 .py 扩展名的模块?

    在我开发的Python系统中 我们通常有这种模块结构 mymodule mymodule mymodule feature py mymodule test feature py 这使得我们的小测试框架可以轻松导入 test feature
  • 我们如何使用 hibernate criteria API 将列排序为 int?

    您好 我想使用 hibernate Criteria API 从数据库中获取数据 该数据应按某些列作为数字排序 该列在 DB 中定义为 varchar 但我必须以数字形式获取 我在使用标准 API 时遇到问题 因为它仅像字符串一样排序 前任
  • SQLite 中的 IF 语句:更新还是插入?

    我无法使用 SQLite 运行此查询 if 0 lt select COUNT from Repetition where Word behnam and Topic mine begin update Repetition set Cou
  • jqplot:分离刻度和系列值

    我有一项 Web 服务 可以在一个数组中发送日期值 针对 x 轴 它将 y 轴值发送到另一个数组中 是否可以让 jqPlot 创建一个包含 2 个这样的数组的图表 文档似乎表明这是可能的 我知道将日期和系列值组合在一个数组中是有效的 希望避
  • 无法使用 phpexcel 上传文件文件路径问题

    我目前正在使用 phpexcel 库来读取我的 excel 文件 该文件将由用户上传 但我现在不能 我正在使用这段代码 我现在无法获得文件路径 如果有人可以告诉我 如何覆盖现有文件并重命名输入文件 文件正在传输到文件夹 但我无法在这一行中获
  • 如何在不运行docker镜像的情况下查看其中的文件? (注意:这个问题是如何在不运行容器的情况下读取文件)[重复]

    这个问题在这里已经有答案了 有时运行 docker 镜像会失败 因此无法通过 ssh 进入容器 在这种情况下 我们如何查看容器内的内容 存在一个问题 但被错误地标记为重复 如何在不运行docker镜像的情况下浏览它 https stacko
  • Android 中的 main() 在哪里?

    我是 Android 新手 正在研究框架 这迫使我问这个问题 由于我们要在 Android 中扩展 Activity 因此必须有main某处Activity或者有一个隐藏类Activity包含的工具main 我到处找 但没找到 如果有人能对
  • MySQL auto_increment步长是如何确定的

    我有一个网页表 主键作为 URL 的哈希值 还有一个 auto increment ID 列 它也是一个唯一键 我有点困惑的是为什么连续插入不会将 ID 字段增加 1 当我第一次创建表并执行一次插入时 第一个 id 是 1 第二次插入生成的