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_sysql과 auto_sysql을 변경할 수 있습니다.마스터 슬레이브 환경에서는 자동 증가 키와 우발적으로 충돌할 가능성이 있으므로 마스터 슬레이브 환경에서만 권장합니다.
이게 누군가에게 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/33618934/automatically-generating-sequential-ids-in-a-galera-cluster
'itsource' 카테고리의 다른 글
Symfony 2에서 요청 매개 변수를 얻는 방법은 무엇입니까? (0) | 2022.11.26 |
---|---|
파이어베이스 콜백 내에서 vuejs 'this'에 액세스할 수 없는 이유는 무엇입니까? (0) | 2022.11.24 |
부호 있는 정수에 대한 비트 연산 결과가 정의되어 있습니까? (0) | 2022.11.24 |
Android와 iOS에서 동일한 C++ 코드를 사용하는 방법은 무엇입니까? (0) | 2022.11.24 |
MySQL 여러 테이블에 삽입? (데이터베이스 정규화?) (0) | 2022.11.24 |