博客
关于我
mysql自增id超大问题查询
阅读量:788 次
发布时间: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/

    你可能感兴趣的文章
    mysql的常见八股文面试题
    查看>>
    MySQL的常见命令
    查看>>
    mysql的引擎以及优缺点_MySQL有哪些存储引擎,各自的优缺点,应用场景-阿里云开发者社区...
    查看>>
    MySQL的操作:
    查看>>
    mysql的数据类型有哪些?
    查看>>
    MYSQL的最左匹配原则的原理讲解
    查看>>
    mysql的语法规范
    查看>>
    MySql的连接查询
    查看>>
    mysql的配置文件参数
    查看>>
    MySQL的错误:No query specified
    查看>>
    mysql监控工具-PMM,让你更上一层楼(上)
    查看>>
    mysql监控工具-PMM,让你更上一层楼(下)
    查看>>
    MySQL相关命令
    查看>>
    mysql社工库搭建教程_社工库的搭建思路与代码实现
    查看>>
    Warning: Can't perform a React state update on an unmounted component. This is a no-
    查看>>
    mysql笔记 (早前的,很乱)
    查看>>
    MySQL笔记:InnoDB的锁机制
    查看>>
    mysql第一天~mysql基础【主要是DDL、DML、DQL语句,以及重点掌握存存引擎、查询(模糊查询)】
    查看>>
    mysql第二天~mysql基础【查询排序、分页查询、多表查询、数据备份与恢复等】
    查看>>
    MySQL简介和安装
    查看>>