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

Làm cách nào để đảm bảo không có khoảng trống trong số auto_increment?

Trước hết, nó hoàn toàn tốt để có những khoảng trống này. Không có vấn đề gì . Đó chỉ là OCD của bạn buộc bạn nghĩ rằng những con số này phải tuân theo một khuôn mẫu - chúng KHÔNG.

  • auto_increment không phải là một tính năng PHP, nó là một tính năng MySQL
  • auto_increment đảm bảo mọi hàng đều có duy nhất con số. Nó không liên quan đến các số tuần tự
  • auto_increment hoạt động an toàn trong môi trường đồng thời - điều đó có nghĩa là có rất nhiều người dùng kết nối với MySQL và thực hiện mọi thứ, và tất cả họ phải có khả năng xử lý cơ sở dữ liệu và không nhận được cùng một id để xác định một hàng. Điều này được thực hiện thông qua một quá trình khá phức tạp và đây là một trong những lý do tại sao auto_increment tạo ra khoảng trống
  • auto_increment được sử dụng bởi InnoDB để tổ chức vật lý các bản ghi trên đĩa - nó sử dụng tính năng của auto_increment và cái đó đang tạo ra một số lớn hơn trước (đó là những gì nó làm, lớn hơn trước, không tuần tự). Sử dụng điều này, một cây b được xây dựng và các bản ghi được ghi theo trình tự trên ổ cứng. Giả mạo bằng auto_increment làm cho InnoDB cân bằng lại cây. Nó có nghĩa là nó đi qua các bản ghi và tạo lại chỉ mục nếu bạn gây rối với nó - đó là điều bạn không muốn. Đã từng

Khi bạn nghĩ về nó, bạn thậm chí nhận được gì với các số liên tiếp? Không có gì thực sự, ngoại trừ bộ não của bạn có thể ít đau hơn vì có một số trật tự tưởng tượng.

Đối với các số liên tiếp, hãy sử dụng trình kích hoạt để tạo chúng. auto_increment có một công việc và một công việc duy nhất - để tạo ra duy nhất số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhập CSV lớn vào cơ sở dữ liệu mysql

  2. MySQL:GROUP_CONCAT với ĐƠN HÀNG BẰNG ĐẾM?

  3. Làm cách nào để kết nối Java với Mysql?

  4. kết nối cơ sở dữ liệu không hoạt động trong jar, nhưng hoạt động trong nhật thực

  5. Cách đặt dữ liệu nhị phân bằng setBlob () trong trình kết nối C ++