Gần đây tôi đã đọc rằng vì cách InnoDB tính toán lại giá trị AUTO_INCREMENT khi máy chủ khởi động lại, mọi bản ghi trên danh sách ID cao cấp có thể được sử dụng lại ID của chúng.
Thông thường, đây không phải là vấn đề, vì khi người dùng bị xóa, mọi thứ liên quan đến ID cũng bị xóa khỏi các bảng khác.
Nhưng tôi cố tình để các bài đăng trên diễn đàn của họ mồ côi, được dán nhãn là "Đăng bởi = Người dùng # 123 =", để các cuộc hội thoại trong quá khứ được giữ lại. Rõ ràng, nếu một ID được sử dụng lại, đây sẽ là một vấn đề.
Tôi chưa bao giờ gặp phải vấn đề này trước đây vì luôn có đủ người dùng mới để khiến ID không thể được sử dụng lại theo cách này. Tuy nhiên, việc đăng ký dự án mới của tôi rất hiếm khi xảy ra và người dùng không hoạt động thường xuyên bị xóa (đặc biệt là khi tài khoản "Open Alpha" chỉ tồn tại trong ba ngày dưới dạng xem trước) và việc sử dụng lại ID như vậy đã xảy ra ba giờ.
Tôi đã "khắc phục" sự cố bằng cách lưu giá trị chính xác cho AUTO_INCREMENT ở nơi khác và sử dụng thay vì dựa vào giá trị nội bộ. Có cách nào thực sự để InnoDB nhớ giá trị thực tế cuối cùng không?