Tối ưu hóa truy vấn MySQL_cache_size


7

Là query_cache_size của tôi quá lớn?

mysql> SHOW VARIABLES LIKE '%query_cache%';
+------------------------------+-----------+
| Variable_name                | Value     |
+------------------------------+-----------+
| have_query_cache             | YES       |
| query_cache_limit            | 4194304   |
| query_cache_min_res_unit     | 4096      |
| query_cache_size             | 201326592 |
| query_cache_type             | ON        |
| query_cache_wlock_invalidate | OFF       |
+------------------------------+-----------+
6 rows in set (0.00 sec)

mysql> SHOW STATUS LIKE '%qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 26643     |
| Qcache_free_memory      | 83199168  |
| Qcache_hits             | 327606097 |
| Qcache_inserts          | 19231291  |
| Qcache_lowmem_prunes    | 10628400  |
| Qcache_not_cached       | 36215     |
| Qcache_queries_in_cache | 92389     |
| Qcache_total_blocks     | 212195    |
+-------------------------+-----------+
8 rows in set (0.00 sec)

mysqlreport says:

__ Query Cache _________________________________________________________
Memory usage  109.13M of 192.00M  %Used:  56.84
Block Fragmnt  12.55%
Hits          327.76M   812.1/s
Inserts        19.24M    47.7/s
Insrt:Prune    1.81:1    21.3/s
Hit:Insert    17.04:1

Câu trả lời:


7

Bạn có thể phân tích việc sử dụng bộ đệm truy vấn của mình bằng các công thức sau:

Kích thước hiện tại so với kích thước tối đa có sẵn:

Để tính phần trăm giá trị được sử dụng cho bộ đệm truy vấn, bạn có thể sử dụng công thức sau:

((query_cache_size-Qcache_free_memory)/query_cache_size)*100

Tỷ lệ truy cập bộ nhớ cache truy vấn:

Tỷ lệ trúng phần trăm trên bộ đệm có thể được tính như sau:

((Qcache_hits/(Qcache_hits+Qcache_inserts+Qcache_not_cached))*100)

ví dụ: Việc sử dụng 33% nói rằng trong tất cả các câu lệnh chọn được thực thi, 33% trong số chúng có thể được thỏa mãn bởi bộ đệm và do đó không phải thực hiện lại.

Lượt truy cập để chèn tỷ lệ và chèn vào tỷ lệ cắt tỉa

Hai tỷ lệ này được tính theo hai công thức sau:

  1. Qcache_hits/Qcache_inserts
  2. Qcache_inserts/Qcache_prunes

KHÔNG phân bổ quá nhiều bộ nhớ

Sử dụng ít bộ nhớ hơn khả dụng có thể làm giảm hiệu suất, nhưng sử dụng nhiều bộ nhớ hơn khả dụng có thể dẫn đến hiệu suất kém hơn hoặc thậm chí là sự cố. Một công thức phân bổ tài nguyên chung là:

memory=key_buffer+(sort_buffer_size+read_buffer_size)*max_connections

Truy vấn Cache Tỷ lệ truy cập = 94% có vẻ khá hiệu quả. Nhưng tỷ lệ chèn để cắt tỉa là 1,8: 1. Điều đó cho thấy kích thước không đủ lớn?
kidrobot

Sử dụng bộ đệm truy vấn của bạn có vẻ là tốt. Đến với tỷ lệ trúng 1,8: 1 là tỷ lệ trúng trung bình, trong đó âm thanh có số lần chèn nhiều hơn so với xóa và cập nhật.
Gopinath

5

Hóa ra kích thước bộ đệm truy vấn không quá lớn. Thay vào đó, các truy vấn không được lưu trong bộ nhớ cache do query_cache_min_res_unit quá lớn.

Bằng cách giảm mức này xuống 1024 gần hơn với kích thước truy vấn trung bình, cuối cùng tôi đã phải tăng query_cache_size và bây giờ nhận được những điều sau đây.

Memory usage  249.07M of 256.00M  %Used:  97.29
Block Fragmnt   1.05%
Hits           12.34M   789.6/s
Inserts       574.80k    36.8/s
Insrt:Prune    4.72:1    29.0/s
Hit:Insert    21.47:1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.