Mysql Query Cache sorguların hafızada tutularak daha sonra aynı sorguların daha hızlı sonuç vermesini sağlayan teknolojidir. Bellek ve limit değerleri tamamen sisteme bağlı olup ancak çalışan bir sistem ve ayrılmış bir donanım üzerinde zamanla ayarlama ve testler yapılarak en çok performansı sağlayabilecek değerlere ulaşılabilir.
Maliyeti ise bu teknoloji için ayrılacak bellek alanı kadardır.
MySQL komut satırına giriş yaptıktan sonra query cache ayarları kontrol edilir.
1 2 3 4 5 6 7 |
mysql> show variables like ‘have_query_cache’; +————————+———-+ | Variable_name Value +————————+———-+ | have_query_cache YES +————————+———-+ 1 row in set (0.00 sec) |
şeklinde have_query_cache=YES olarak set edilmiş olmalıdır.
Geçerli query cache parametrelerini görmek için:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
mysql> show variables like ‘query%’; +———————————————————-+ | Variable_name | Value +———————————————————-+ | query_alloc_block_size | 8192 | query_cache_limit | 1048576 | query_cache_min_res_unit | 4096 | query_cache_size | 0 | query_cache_type | ON | query_cache_wlock_invalidate | OFF | query_prealloc_size | 8192 +———————————————————-+ 7 rows in set (0.00 sec) |
query_cache_type değişkeni teknolojinin devrede olduğunu belirtir.
Fakat pratikte teknoloji kullanılmadığı gözükmektedir, çünkü query_cache_size değişkeni 0′ı gösteriyor. Bu değişken, bellekte ne kadar yer ayrıldığını gösterir. Hiç ayrılmamış.
Bu değişkene değer atayarak query_cache_type pratikte de çalışır hale getirilir.
Query cache 80MB kullanmak istediğimizde 80*1024*1024 = 83886080
1 |
mysql> set global query_cache_size=83886080; |
query_cache_size: byte türünden sistemde saklamak istediğiniz cache miktarı.
query_cache_type: ON/OFF olarak kapalı ya da açık olduğu bilgisi. 1 ya da 0 olarak da set edilebilir.
query_cache_limit: ön belleğe alınacak sorguların maksimum bellek miktarı(byte)
Bu ayarları reboot sonrası da saklamak ve etkinleştirmek için /etc/my.cnf dosyasına
1 2 3 4 5 |
query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576 |
şeklinde ekleme ya da uncomment edilmiş satırları aktifleştirip değiştirmek yeterlidir.
So, what do you think ?