Ở bài trước, mình đã chia sẻ một số lưu ý cơ bản về MySQL Query Cache.
Trong bài đăng này, tôi đang chia sẻ chi tiết về cấu hình và giám sát bộ nhớ cache truy vấn.
Kiểm tra đầu tiên, Bộ nhớ cache truy vấn có sẵn hay không.
Vui lòng thực hiện lệnh SHOW bên dưới:
1 2 3 4 5 6 | mysql> SHOW VARIABLES LIKE 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+ |
Để vô hiệu hóa bộ đệm truy vấn khi khởi động máy chủ, đặt biến hệ thống query_cache_size thành 0. Theo mặc định, bộ nhớ cache truy vấn bị tắt.
Sử dụng query_cache_size, bạn có thể đặt kích thước của Bộ nhớ đệm truy vấn phải lớn hơn khi bạn định chứa nhiều dữ liệu hơn vào Bộ nhớ đệm nhưng một lần nữa, đây là nhiệm vụ phân tích việc sử dụng bộ nhớ của bạn.
1 2 3 4 5 6 7 8 9 10 | mysql> SET GLOBAL query_cache_size = 1000000; Query OK, 0 rows affected (0.04 sec) mysql> SHOW VARIABLES LIKE 'query_cache_size'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | query_cache_size | 999424 | +------------------+--------+ 1 row in set (0.00 sec) |
Truy vấn Cache với SELECT :
1 2 | SELECT SQL_CACHE * FROM tbl_users; SELECT SQL_NO_CACHE * FROM tbl_users; |
Trong hai câu lệnh select ở trên, bạn có thể tìm thấy hai số nhận dạng.
SQL_CACHE
Kết quả truy vấn được lưu vào bộ nhớ cache nếu nó có thể lưu vào bộ nhớ cache và giá trị của biến hệ thống query_cache_type là ON hoặc DEMAND.
SQL_NO_CACHE
Máy chủ không sử dụng bộ đệm truy vấn. Nó không kiểm tra bộ nhớ cache truy vấn để xem liệu kết quả đã được lưu vào bộ nhớ cache hay chưa và nó không lưu kết quả truy vấn vào bộ nhớ cache.
1 | SHOW VARIABLES LIKE 'query_cache_type'; |
- Giá trị 0 hoặc TẮT ngăn chặn việc lưu vào bộ nhớ đệm hoặc truy xuất các kết quả đã lưu trong bộ nhớ đệm.
- Giá trị 1 hoặc ON cho phép lưu vào bộ nhớ đệm ngoại trừ những câu lệnh bắt đầu bằng SELECT SQL_NO_CACHE.
- Giá trị 2 hoặc DEMAND chỉ gây ra bộ đệm cho những câu lệnh bắt đầu bằng SELECT SQL_CACHE.
Để theo dõi hiệu suất bộ nhớ cache truy vấn, hãy sử dụng SHOW STATUS để xem các biến trạng thái bộ nhớ cache:
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> SHOW STATUS LIKE 'Qcache%'; +-------------------------+--------+ | Variable_name | Value | +-------------------------+--------+ | Qcache_free_blocks | 36 | | Qcache_free_memory | 138488 | | Qcache_hits | 79570 | | Qcache_inserts | 27087 | | Qcache_lowmem_prunes | 3114 | | Qcache_not_cached | 22989 | | Qcache_queries_in_cache | 415 | | Qcache_total_blocks | 912 | +-------------------------+--------+ |