Tôi đã thành công trong quá khứ lưu trữ các kết quả xử lý cơ sở dữ liệu (mem) nặng nề, sử dụng thời gian cập nhật cuối cùng của (các) bảng bên dưới như một phần của khóa bộ nhớ cache. Đối với các bảng MyISAM, thời gian thay đổi lần cuối có sẵn trong SHOW TABLE STATUS
. Thật không may, đó thường là NULL cho các bảng InnoDB.Làm cách nào để xác định khi nào bảng InnoDB được thay đổi lần cuối?
Trong MySQL 4.1, thời gian cho một InnoDB trong dòng SHOW TABLE STATUS
thường là thời gian cập nhật cuối cùng thực tế, nhưng điều đó dường như không đúng đối với MySQL 5.1.
Có trường DATETIME trong bảng, nhưng nó chỉ hiển thị khi một hàng đã được sửa đổi - nó không thể hiển thị thời gian xóa của hàng không còn ở đó nữa! Vì vậy, tôi thực sự không thể sử dụng MAX(update_time)
.
Đây là phần thực sự phức tạp. Tôi có một số bản sao mà tôi đọc từ đó. Tôi có thể tìm ra trạng thái của bảng không phụ thuộc vào thời điểm các thay đổi đã thực sự được áp dụng không?
Kết luận của tôi sau khi làm việc này một lúc là không thể có được thông tin này với giá rẻ như tôi muốn. Tôi có thể sẽ lưu dữ liệu vào bộ nhớ cache cho đến khi tôi mong đợi bảng thay đổi (nó được cập nhật một lần một ngày) và để cho bộ nhớ cache truy vấn giúp đỡ nơi có thể.
Hãy ghi nhớ nếu đi con đường 2.nd về InnoDB gây nên: "Lưu ý Hiện tại, các tác vụ khóa ngoại vi xếp tầng không kích hoạt trình kích hoạt". (từ [13.2.2.5. Ràng buộc KEY NGOÀI] (http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html)) –