Xin lưu ý rằng BẢNG TỐI ƯU không thực hiện phân mảnh. Trong nội bộ, BẢNG TỐI ƯU thực hiện một số thao tác (sao chép dữ liệu vào tệp tạm thời, tạo lại chỉ mục, tính toán lại thống kê chỉ mục). Trong thực tế, ví dụ tôi có thể được thực hiện thủ công như được hiển thị.
Ví dụ: Nếu bạn tối ưu hóa mydb.mytable
, bạn nhập lệnh này:
OPTIMIZE TABLE mydb.mytable;
Lưu ý rằng mysql thực hiện một số thứ sau đây:
CREATE TABLE mydb.mytable2 LIKE mydb.mytable;
ALTER TABLE mydb.mytable2 DISABLE KEYS;
INSERT INTO mydb.mytable2 SELECT * FROM mydb.mytable;
ALTER TABLE mydb.mytable2 ENABLE KEYS;
DROP TABLE mydb.mytable;
ALTER TABLE mydb.mytable2 RENAME mydb.mytable;
ANALYZE TABLE mydb.mytable;
Điều này khá hữu ích cho các bảng có khối lượng CẬP NHẬT và XÓA nhiều
Thực hiện điều này có thể thực hiện hai điều
Ngăn chặn mysql xem qua các đoạn trong bảng trong nỗ lực tải dữ liệu vào các đoạn có kích thước phù hợp. Loại bỏ những mảnh vỡ này sẽ làm giảm hoạt động này.
Việc thống kê chỉ mục được tính toán lại giúp Trình tối ưu hóa truy vấn MySQL xây dựng các kế hoạch GIẢI THÍCH tốt hơn. Mặt khác, các truy vấn có thể xấu đi trong thời gian thực hiện vì Trình tối ưu hóa truy vấn MySQL đã quyết định đưa ra những dự đoán xấu trong kế hoạch GIẢI THÍCH. Đây sẽ là một triệu chứng rõ ràng của một bảng có khối lượng CẬP NHẬT và XÓA cao.
CAUPAT
Liên quan đến bộ nhớ đệm, bộ nhớ đệm mất một cách nhanh chóng vì thực hiện quét toàn bộ bảng. Đối với các trang chỉ mục MyISAM chảy vào và ra khỏi Bộ đệm chính MyISAM. Đối với InnoDB, các trang dữ liệu và chỉ mục chảy vào và ra khỏi Bộ đệm InnoDB.