Xem thời gian cập nhật cuối (last update time) của bảng MySQL
Sử dụng INFORMATION_SCHEMA.TABLES cột UPDATE_TIME để biết lần cuối bảng bị sửa đổi. Chỉ hoạt động chính xác với engine MyISAM.
Cú pháp
SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDatabase' AND TABLE_NAME = 'yourTable';
Ví dụ với database 'business'
Trường hợp 1: Bảng MyISAM có dữ liệu
mysql> SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'business' AND TABLE_NAME = 'twoprimarykeytabledemo';
+---------------------+ | UPDATE_TIME | +---------------------+ | 2018-11-21 16:51:50 | +---------------------+
Trường hợp 2: Bảng MyISAM khác
mysql> SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'business' AND TABLE_NAME = 'currenttimezone';
+---------------------+ | UPDATE_TIME | +---------------------+ | 2018-10-29 17:20:18 | +---------------------+
Trường hợp 3: Bảng InnoDB → NULL
mysql> SELECT UPDATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'business' AND TABLE_NAME = 'zerofilldemo';
+-------------+ | UPDATE_TIME | +-------------+ | NULL | +-------------+
Giải thích
- MyISAM: Cập nhật UPDATE_TIME real-time khi INSERT/UPDATE/DELETE
- InnoDB: Không cập nhật UPDATE_TIME (luôn NULL) do kiến trúc transactional, buffer pool
- CREATE_TIME: Thời gian tạo bảng (cả 2 engine đều có)
- CHECK_TIME: Lần cuối chạy CHECK TABLE / REPAIR TABLE
Giải pháp cho InnoDB
- Trigger + bảng log: Tạo trigger AFTER INSERT/UPDATE/DELETE ghi vào bảng audit
innodb_table_stats(MySQL 5.6+): persistent stats, cólast_updatenhưng không real-time- Application-level: Ghi log thời gian trong ứng dụng
- Binary log: Phân tích binlog để biết thời gian thay đổi
Truy vấn nhiều bảng cùng lúc
SELECT TABLE_NAME, UPDATE_TIME, CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'business' ORDER BY UPDATE_TIME DESC;