Vào tháng 6 năm 2014, tôi đã trả lời https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6 / 66796 # 66796
Trong bài đăng đó, tôi đã thảo luận về cách các vi quản lý InnoDB thay đổi giữa Nhóm đệm InnoDB và Bộ đệm truy vấn.
KHÔNG SỬ DỤNG QUERY CACHE
Câu trả lời đơn giản nhất là chỉ cần vô hiệu hóa bộ đệm truy vấn, nhưng có một vấn đề:Bạn phải đặt cả query_cache_size và query_cache_type thành không (0).
Nếu bạn không đặt query_cache_type về không (0), việc quản lý vi mô của các thay đổi vẫn xảy ra. Điều này được xác minh bởi những gì Đoạn 8 của MySQL Tài liệu "Cấu hình bộ nhớ đệm truy vấn" nói
SỬ DỤNG QUERY CACHE
Nếu bạn thực sự muốn sử dụng Bộ đệm truy vấn, thì bạn cần nghiên cứu dữ liệu của mình. Về cơ bản, bạn cần biết kích thước kết quả của mình. Sau đó, bạn sẽ đặt query_cache_limit và query_cache_min_res_unit để phù hợp với tập kết quả kích thước trung bình cũng như tập kết quả kích thước tối đa.
Thay vào đó, bạn có thể bật Bộ đệm truy vấn trên toàn cầu nhưng vô hiệu hóa việc sử dụng nó khỏi Phiên DB của bạn như đã nêu trong Đoạn 9 :
CÂU HỎI THỰC TẾ CỦA BẠN
Bộ nhớ đệm truy vấn, Nhóm đệm InnoDB, Mỗi chuỗi kết nối (Xem bài đăng của tôi https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973 # 16973 ) và hệ điều hành đều cạnh tranh về RAM.
Khi chỉ nhìn vào Bộ đệm truy vấn và Nhóm đệm InnoDB, bạn cần xem còn bao nhiêu dung lượng trống trong Nhóm đệm InnoDB sau khi MySQL đã chạy trong vài ngày hoặc vài tuần.
Bạn có thể chạy truy vấn này
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
Điều này sẽ cho bạn biết bạn có thể giảm Nhóm đệm InnoDB xuống bao nhiêu. Sau đó, bạn có thể tăng Bộ nhớ cache truy vấn bằng kích thước đó. Nếu truy vấn này trả về ít hơn 1024, nó có thể không đáng để nỗ lực. Bạn sẽ có thêm dung lượng từ RAM hoặc chỉ cần tắt Bộ nhớ cache truy vấn.