V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
Pzdmultiverse
V2EX  ›  MySQL

求大佬帮解这个 mysql 自增的疑问,非常感谢!

  •  
  •   Pzdmultiverse · 267 天前 · 989 次点击
    这是一个创建于 267 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题重现:

    第一步:创建 t10 表,并插入数据

    create table t10(
    	id int primary key auto_increment,
    	num char(10)
    );
    
    
    insert into t10(num) values('1'),('2');
    

    1710867298716.png

    第二步:修改会话的自增步长和偏移量,并再插入两条数据

    set session auto_increment_increment = 5;
    set session auto_increment_offset = 5;
    
    insert into t10(num) values('3'),('8');
    

    这个时候查询第三条数据的 id 是 5 ,而不是 3 ,就很疑惑。

    1710867327730.png

    2 条回复    2024-03-20 08:55:59 +08:00
    javaluo
        1
    javaluo  
       267 天前 via iPhone
    offset 是起始点,所以是从五开始始你看看对不



    auto_increment_offset 的官方文档定义如下:

    MySQL 官方文档中对 auto_increment_offset 的解释是,这个系统变量定义了自增列的起始值。当你有多个主从复制或群集节点时,这个变量特别有用,因为它可以帮助避免自增值在不同节点上的重复。

    具体来说:

    • auto_increment_increment 控制自增值之间的间隔。
    • auto_increment_offset 决定了序列中第一个 auto_increment 值的起点。

    当你插入新行时,自增列的值会从 auto_increment_offset 开始,并按照 auto_increment_increment 设置的值递增。如果表中已经有数据,MySQL 将继续按照这两个参数定义的规则递增,同时确保新的自增值不会和现有值冲突。

    在单节点环境中,auto_increment_offset 通常设置为 1 ,但在主从复制或群集环境中,你可以设置不同的偏移量来确保每个节点生成的自增值是唯一的。例如,在一个双节点的环境中,你可以在一个节点上设置 auto_increment_increment 为 2 ,auto_increment_offset 为 1 ,而在另一个节点上设置 auto_increment_increment 为 2 ,auto_increment_offset 为 2 ,这样两个节点生成的自增值就不会冲突。
    Rache1
        2
    Rache1  
       267 天前
    额,你在设置变量,你就没看过这些变量的用途吗

    (以下内容未经测试)

    >
    mysql 中有自增长字段,在做数据库的主主同步时需要设置自增长的两个相关配置:auto_increment_offset 和 auto_increment_increment 。
    >
    auto_increment_offset 表示自增长字段从那个数开始,他的取值范围是 1 .. 65535
    auto_increment_increment 表示自增长字段每次递增的量,其默认值是 1 ,取值范围是 1 .. 65535

    Mysql 设置 auto_increment_increment 和 auto_increment_offset - DBArtist - 博客园
    https://www.cnblogs.com/DBArtist/p/6053314.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3190 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 05:02 · PVG 13:02 · LAX 21:02 · JFK 00:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.