博客
关于我
mysql自增id超大问题查询
阅读量:796 次
发布时间:2023-02-13

本文共 631 字,大约阅读时间需要 2 分钟。

引言

小A正在编写代码时,DBA小B指出用户特定信息表T的主键自增id已经达到16亿,担心未来插入操作会失败。小A发现实际数据却只有1100万,怀疑自增id的处理方式。

问题排查

小A排查代码后发现没有直接删除或插入操作,于是怀疑DBA或其他原因。进一步观察发现,自增id每天递增,且递增幅度不一。小B提到是否使用了REPLACE INTO,但小A否认。小B建议检查binlog日志,结果未发现问题,但自增id确实存在跳跃。

REPLACE INTO的影响

REPLACE INTO会删除现有记录并插入新数据,导致自增id递增。小A确认未使用该语句,但自增id跳跃仍存在。

INSERT...ON DUPLICATE KEY UPDATE的影响

该语句不会改变主键,但返回的行数为2,表示插入一行,更新另一行。官方解释插入成功返回1,更新成功返回2。默认innodb_autoinc_lock_mode=1下,自增id会加1,导致跳跃。

插入行为分析

在默认模式下,自增id会加1,导致跳跃。修改模式为0时,插入时锁表确保自增id准确,避免跳跃。

返回值解释

官方文档说明插入成功返回1,更新成功返回2。小A理解为插入1行,更新1行,总返回2行。

解决方案

  • 修改业务逻辑:拆分操作,先查询再更新,避免自增id跳跃,但增加复杂性。

  • 删除自增主键:改用唯一索引,简化处理,但可能影响效率。

  • 结语

    小A通过深入研究发现问题根源,强调保持好奇心和敏感对技术发展的重要性。

    转载地址:http://sodfk.baihongyu.com/

    你可能感兴趣的文章
    Nhibernate的第一个实例
    查看>>
    NHibernate示例
    查看>>
    nid修改oracle11gR2数据库名
    查看>>
    NIFI1.21.0/NIFI1.22.0/NIFI1.24.0/NIFI1.26.0_2024-06-11最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>