Tài liệu / MyISAM, InnoDB và khoá ghi
MyISAM, InnoDB và khoá ghi
Bảng InnoDB backup không khoá. Bảng MyISAM/Aria cần khoá ghi ngắn và luôn chép toàn bộ.
SaintBackup tự quyết định
Trước mỗi lần chạy, Agent kiểm tra engine của từng bảng trong phạm vi (không tính DB hệ thống mysql):
- Toàn bộ là InnoDB → chạy chế độ không khoá (
--no-lock): ứng dụng vẫn ghi bình thường suốt quá trình backup. - Có bảng MyISAM/Aria → tắt chế độ không khoá. MariaDB khoá ghi trong lúc chép các bảng đó. Trang Agent trên Center hiện cảnh báo kèm số bảng.
Vì sao MyISAM tốn hơn
- MyISAM không có nhật ký thay đổi, nên mỗi bản incremental vẫn chép toàn bộ file
.MYD/.MYIcủa bảng. - Thời gian khoá ghi tỷ lệ với dung lượng bảng MyISAM.
Chuyển sang InnoDB
Khuyên chuyển các bảng đang ghi thường xuyên. Làm từng đợt, bảng nhỏ trước, vào giờ vắng:
SET SESSION sql_mode='';
ALTER TABLE `db`.`ten_bang` ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
Kiểm tra trước: tìm kiếm FULLTEXT trên InnoDB có ngưỡng độ dài từ và stopword khác MyISAM (
innodb_ft_min_token_size), kết quả MATCH … AGAINST có thể thay đổi. Đếm dòng (COUNT(*)) trên InnoDB chậm hơn MyISAM với bảng lớn.