2014-04-11 12 views
6

Tôi có một MariaDB Galera cụm (3 ​​nút), tôi đặt uid để tăng tự động và là chìa khóa chính của bảng nhưTại sao id auto_increment không tăng từng cái một, làm thế nào để thiết lập nó?

`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 | 
    +-----+ 

Tôi đã thử các lệnh sau, và nó không hoạt động

alter table uid AUTO_INCREMENT=1 
+0

Bạn chính xác. Tôi đào một số thông tin có liên quan hơn. – user2864740

Trả lời

11

này là do thiết kế và được báo cáo trong MariaDB Galera Cluster - Known Limitations:

Đừng dựa vào giá trị auto-increment là tuần tự. Galera sử dụng một cơ chế dựa trên tăng tự động để tạo ra các chuỗi không xung đột duy nhất, do đó, trên mỗi nút đơn, trình tự sẽ có khoảng trống.

Lý do hợp lý được giải thích trong Managing Auto Increments with Multi Masters và cũng là lý do tại sao tăng tự động được quan sát có cùng bước với số lượng cụm.

MySQL có các biến hệ thống auto_increment_increment và auto_increment_offset để quản lý tự động gia tăng 'chuỗi' trong môi trường đa chủ. Sử dụng các biến này, có thể thiết lập bản sao đa chủ, trong đó các chuỗi tăng tự động trong mỗi nút chính xen kẽ và không có xung đột nào xảy ra trong cụm. Không có vấn đề mà chủ (s) có được INSERTs.

Thậm chí không có cụm, hiếm khi ý tưởng "tốt" dựa vào các cột tăng tự động là chuỗi dày đặc do cuộn ngược giao dịch và bản ghi đã xóa.

+0

cảm ơn rất nhiều, tôi nên đọc những hạn chế trước khi tôi thiết lập cụm của riêng mình! – haifzhan

Các vấn đề liên quan