zoukankan      html  css  js  c++  java
  • MySQL--自增列持久化问题

    自增列持久化问题

    5.5/5.6/5.7三个版本中,MySQL并不会将自增列分配的自增值信息固化到磁盘,当MySQL重启后,会根据自增列上当前最大值和参数auto_increment_offset来确定下一次的自增值,为快速获取自增列上最大值,MySQL要求自增列必须建有索引。

    如果一张自增表的数据在重启实例前被清空,实例重启后该表数据会从”1”开始自增(假设表的自增初始值定义为1)。

    在某次数据库升级过程中,某张业务表”恰好”因为业务逻辑将表中所有数据删除,重启后该表自增值从1开始生成,当该表数据流转到其他表出现数据冲突,发现问题后,我们紧急手动设置该表自增值,避免事故进一步恶化,并再后期类似操作时,重点关注此类自增表。

    如果业务会对自增表数据进行硬删除,在服务器重启前应重点关注该自增表使用的自增值,可以通过information_schema.tables中的auto_increment列来获取。

    PS1:在MySQL 8.0中引入自增列持久化特性,可以避免上述问题。

    自增列初始值问题

    自增列初始值和增量值取决于:

    1、全局参数auto_increment_increment和auto_increment_offset,这两参数作用于所有自增表,主要应用于分库分布场景。

    2、表创建语句, 在使用SHOW CREATE TABLE或MySQLDump等命令导出建表语句时,建表语句中会包含表当前最大值。

    3、服务器重启后,根据表中自增列最大值确定下一次的自增值。

  • 相关阅读:
    CSV格式的文件与EXCEL文件的区别
    Arcgis 离线部署api 4.x的两种本地部署方法!
    IDEA版部署离线ArcGIS api for JavaScript
    java web中统一结果返回封装类JsonResult
    网络最大流dinic
    Luogu P3834 可持久化线段树2(主席树)
    LuoguP2824[HEOI2016/TJOI2016]排序
    2021.03.24模拟赛DP
    Luogu P3166数三角形
    乘法逆元
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10392764.html
Copyright © 2011-2022 走看看