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

MariaDB - INNODB bỏ qua chuỗi số trong khi tạo các bản ghi tăng dần - tại sao?

Cơ chế auto_increment là bắt buộc để tạo ra duy nhất giá trị lớn hơn bất kỳ giá trị nào mà nó đã tạo trước đó. Nó không đảm bảo tạo ra liên tiếp giá trị.

Có một số cuộc thảo luận về nó ở đây: https://bugs.mysql.com/bug. php? id =57643

Có rất ít tầm quan trọng trong việc tạo các giá trị liên tiếp một cách trung thực, bởi vì bất kỳ giá trị nào cũng có thể bị "mất" vì các lý do khác:

  • CHÈN của bạn không thành công, chẳng hạn như do vi phạm một ràng buộc như KEY UNIQUE hoặc FOREIGN KEY.
  • Bạn khôi phục giao dịch cho INSERT của mình.
  • Bạn thành công và cam kết, nhưng sau đó hàng bị bạn hoặc phiên khác XÓA.

Giá trị auto-inc không được trả lại cho bất kỳ loại hàng đợi nào, vì các phiên đồng thời khác có thể đã tạo thêm giá trị id trong thời gian chờ đợi. Không đáng để InnoDB duy trì một nhóm các giá trị id chưa được phân bổ, vì nhóm đó có thể trở nên lớn và lãng phí.

Ngoài ra, có thể thích hợp để "mất" một giá trị ID hoặc người khác sẽ nghĩ rằng hàng mà họ muốn XÓA bằng cách nào đó đã quay trở lại.



  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 Chọn Ngày tương đương với Hôm nay

  2. MySQL - kết quả phù hợp và không khớp trong truy vấn Where IN

  3. Làm thế nào để còn lại tham gia 2 bảng trên 2 cơ sở dữ liệu khác nhau?

  4. Giá trị danh sách thả xuống động từ cơ sở dữ liệu

  5. Làm cách nào để lấy bản ghi tiếp theo bên trong tập dữ liệu kết quả mysql?