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

时间:2014-04-11 21:05:30

标签: 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 |
    +-----+

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

 alter table uid AUTO_INCREMENT=1

2 个答案:

答案 0 :(得分:16)

这是设计使然,并在MariaDB Galera Cluster - Known Limitations中报告:

  

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

理性在Managing Auto Increments with Multi Masters中解释,也是观察到的自动增量与群集数量相同的原因。

  

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

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

答案 1 :(得分:0)

wsrep_auto_increment_control =关闭

将允许您在mysql中更改 auto_increment_increment auto_increment_offset 。仅在主从环境中推荐,因为在主从环境中可能会与自动增量键偶然冲突。

希望这会对某人有所帮助。