programing

auto_increment id가 1개씩 증가하지 않는 이유는 무엇입니까?설정 방법은?

bestcode 2022. 9. 4. 15:22
반응형

auto_increment id가 1개씩 증가하지 않는 이유는 무엇입니까?설정 방법은?

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

이는 설계상이며 MariaDB Galera Cluster - 알려진 제한 사항:

자동 증분 값은 순차적으로 증가하지 마십시오.Galera는 자동 증분 인크리먼트에 기초한 메커니즘을 사용하여 고유한 충돌 없는 시퀀스를 생성하므로 모든 노드에서 시퀀스에 공백이 생깁니다.

그 이유는 "Multi Masters를 사용한 자동 증분 관리"에서 설명되며, 관찰된 자동 증분이 클러스터 수와 동일한 단계를 갖는 이유이기도 합니다.

MySQL에는 멀티 마스터 환경에서 자동 증분 '시퀀스'를 관리하기 위한 시스템 변수 auto_increment_increment 및 auto_increment_offset이 있습니다.이러한 변수를 사용하면 멀티 마스터 복제를 설정할 수 있습니다.이 경우마스터노드의 시퀀스가 자동으로 인터리브되므로 클러스터 내에서 경합이 발생하지 않습니다.어떤 마스터가 INSERT를 받든 상관없습니다.

클러스터가 없는 경우에도 트랜잭션 롤백 및 삭제된 레코드로 인해 고밀도 시퀀스가 되도록 자동 증가 열에 의존하는 것은 "좋은" 아이디어가 거의 없습니다.

wsrep_auto_control=오프

를 사용하면 mysql에서 auto_sysqlauto_sysql을 변경할 수 있습니다.마스터 슬레이브 환경에서는 자동 증가 키와 우발적으로 충돌할 가능성이 있으므로 마스터 슬레이브 환경에서만 권장합니다.

이게 누군가에게 도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/23022574/why-the-auto-increment-id-does-not-increase-one-by-one-how-to-set-it

반응형