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

Tại sao tính năng tự động tăng của MySQL lại tăng trên các lần chèn không thành công?

InnoDB là một công cụ giao dịch.

Điều này có nghĩa là trong trường hợp sau:

  1. Session A chèn bản ghi 1
  2. Session B chèn bản ghi 2
  3. Session A quay trở lại

, có khả năng có khoảng trống hoặc session B sẽ khóa cho đến khi session A đã cam kết hoặc quay trở lại.

InnoDB các nhà thiết kế (cũng như hầu hết các nhà thiết kế công cụ giao dịch khác) đã chọn để cho phép các khoảng trống.

Từ tài liệu > :

Khi truy cập bộ đếm tăng tự động, InnoDB sử dụng AUTO-INC cấp bảng đặc biệt khóa nó giữ ở cuối SQL hiện tại tuyên bố, không phải để kết thúc giao dịch. Chiến lược phát hành khóa đặc biệt đã được giới thiệu để cải thiện tính đồng thời cho các phần chèn vào bảng có chứa AUTO_INCREMENT cột

InnoDB sử dụng bộ đếm gia tăng tự động trong bộ nhớ miễn là máy chủ chạy. Khi máy chủ dừng và khởi động lại, InnoDB khởi động lại bộ đếm cho mỗi bảng cho INSERT đầu tiên vào bảng, như đã mô tả trước đó.

Nếu bạn sợ id cột bao quanh, đặt nó thành BIGINT (Dài 8 byte).



  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ững gì cần giám sát trong MySQL 8.0

  2. MySQL PHP không tương thích

  3. Phần còn lại trong PostgreSQL, MS SQL Server, MySQL và SQLite

  4. Cú pháp TẠO CƠ SỞ DỮ LIỆU SQL - Được DBMS liệt kê

  5. Tạo ứng dụng web từ Scratch bằng Python Flask và MySQL:Phần 3