为什么auto_increment id不会逐个增加,如何设置呢?

Hai*_*ang 13 mysql primary-key mariadb

我有一个MariaDB Galera集群(3个节点),我设置uid为自动增加并成为表的主键

 `uid       | int(11)     | NO   | PRI | NULL    | auto_increment`. 


 MariaDB [hello_cluster]> select uid from table order by uid limit 10;
    +-----+
    | uid |
    +-----+
    |   3 |
    |   6 |
    |   9 |
    |  12 |
    |  15 |
    |  18 |
    |  21 |
    |  24 |
    |  27 |
    |  30 |
    +-----+
Run Code Online (Sandbox Code Playgroud)

我尝试了以下命令,但它不起作用

 alter table uid AUTO_INCREMENT=1
Run Code Online (Sandbox Code Playgroud)

use*_*740 19

这是设计使然并在MariaDB Galera Cluster中报告- 已知限制:

不要依赖自动增量值来顺序.Galera使用基于自动增量增量的机制来产生唯一的非冲突序列,因此在每个节点上序列都会有间隙.

使用多主机管理自动增量中解释了理性,这也是观察到的自动增量与群集数量具有相同步骤的原因.

MySQL具有系统变量auto_increment_increment和auto_increment_offset,用于管理多主环境中的自动增量"序列".使用这些变量,可以设置多主复制,其中每个主节点中的自动递增序列交错,并且群集中不应发生冲突.无论哪个主人获得INSERT.

即使没有集群,由于事务回滚和删除的记录,依赖自动增量列成为密集序列也很少"好".