标签:格式 sql ons 于平 问题 simple 也有 最好 ast
在MySQL5.7中做INSERT IGNORE时发现, 即使INSERT未成功执行, 表的自增主键却自动加1了, 在某些情况下需要避免这种行为. 需要修改的变量是 innodb_autoinc_lock_mode, 将其设为0后, 在INSERT未成功执行时不会自增主键.
innodb_autoinc_lock_mode在MySQL各版本的默认值
根据MySQL官方手册的说明:
There are three possible settings for the innodb_autoinc_lock_mode configuration parameter. The settings are 0, 1, or 2, for “traditional”, “consecutive”, or “interleaved” lock mode, respectively. As of MySQL 8.0, interleaved lock mode (innodb_autoinc_lock_mode=2) is the default setting. Prior to MySQL 8.0, consecutive lock mode is the default (innodb_autoinc_lock_mode=1).
在MySQL8中, 默认值为 2 (interleaved, 交错), 在MySQL8以前, 准确地说在8之前, 5.1之后, 默认值为 1 (consecutive, 连续), 在更早的版本是 0
innodb_autoinc_lock_mode的说明
这个值主要用于平衡性能与安全(主从的数据一致性), insert主要有以下类型
innodb_autoinc_lock_mode = 0:
innodb_autoinc_lock_mode = 1:
innodb_autoinc_lock_mode = 2:
MySQL在INSERT IGNORE未新增记录时避免AUTO_INCREMENT自增
标签:格式 sql ons 于平 问题 simple 也有 最好 ast
原文地址:https://www.cnblogs.com/milton/p/10261365.html