Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao mysql bỏ qua một số id tăng tự động?

Đó là một ví dụ về khóa tăng tự động trong InnoDB:Khi bạn đang thực hiện đồng thời 2 câu lệnh trong cùng một phiên:khóa tự động có được bởi truy vấn đầu tiên và việc tạo giá trị tự động tăng không được xen kẽ giữa các câu lệnh - đó là toàn bộ điểm giao dịch.

Điều này sẽ luôn xảy ra theo thiết kế:Nếu không, cách các giao dịch trong InnoDB hoạt động, tốt, sẽ không hoạt động. Khả năng mở rộng khi tải loại OLTP sẽ rất kinh khủng vì mọi chèn sẽ phải đợi mọi chèn khác hoàn thành, được cam kết hoặc tệ hơn là được khôi phục.

Tức là:Nếu lần chèn đầu tiên của bạn chạy lâu hơn 5 lần so với lần chèn thứ hai, không thành công và được khôi phục lại, thì lần chèn thứ hai vẫn hoàn thành và đã được cam kết. Nếu không, bạn sẽ phải đợi ea. truy vấn hoàn thành sau truy vấn khác.

Nếu bạn yêu cầu số ID tuần tự và hoàn toàn duy nhất, hãy lấy chúng từ một nguồn khác. Các cột AutoInc chỉ đơn giản đảm bảo một giá trị duy nhất - không nhất thiết phải là một dãy số - đó là một điểm tuần tự hóa và một nút thắt cổ chai.

Một cách giải quyết vấn đề này nếu có yêu cầu khác:

đặt innodb_autoinc_lock_mode = 0 trong my.cnf / mysql.ini

của bạn

Mô tả khóa auto inc trong InnoDB và Tùy chọn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Cập nhật nếu tồn tại khác chèn bằng hai khóa

  2. Sự cố bộ đệm MySqlDataReader GetBytes ...

  3. MySQL loại bỏ một số khóa ngoại

  4. Kết nối từ xa với cơ sở dữ liệu MySQL

  5. làm thế nào để đếm tổng số bình luận