Конфигуриране на кеш MySQL Query
Използването на заявки за кеширане, той е един от основните фактори, влияещи върху производителността на MySQL. Функционалност Query Cache предлага допълнителни възможности за оптимизиране на базата данни, както и да се намали времето за обработка на няколко пъти на заявката. -Добро цялостно представяне на заявките Cache показва на уеб сървъри, които имат маси не се променят много често и много идентични запитвания.
Подходящо за SELECT заявка, MySQL автоматично запазва текста на заявката и извличането на данните в кеша. Всички идентични искания в бъдеще, ще бъдат обработвани от заобикаляйки базата данни чрез функцията за MySQL Query Cache. По този начин, кеширани исканията не се извършват най-малко.
За работа в променлива стойност на заявките кеша query_cache_type трябва да се създаде или по поръчка, и query_cache_size бъде различна от нула.
В противен случай, трябва да добавите подходящите настройки в [Mysqld] раздел MySQL конфигурационния файл:
За определяне на променливите на работа функция Query Cache срещат системни започващи с "query_cache_".
query_cache_limit - максималният размер на извадката, които ще бъдат записани в кеша. Стойността трябва да посочите максималния размер на най-тежката заявката, но не прекалено издуват стойността на този параметър.
query_cache_min_res_unit - минималният размер на разпределените блок памет за съхраняване на резултатите от кеширана заявка. За да напишете данни в кеша MySQL разделя пробата на отделни блокове с минимален размер на query_cache_min_res_unit. Последният такъв блок, закрепен за размер на данните, както и свободната памет, той е оправдан. За да напишете данните в кеша, MySQL, както е необходимо разпределя блокове query_cache_min_res_unit. Стойността трябва да определи средната стойност на размера на извадката, на всички заявки. Query_cache_min_res_unit приблизителна стойност може да бъде изчислена по формулата query_cache_min_res_unit = (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache. Твърде висока стойност ще допринесе за раздробяването на кеш паметта е твърде малък, може да доведе до спад в производителността.
query_cache_size - сумата, заделена памет за съхранение на кеша за запитване. Стойност 0 забранява MySQL Query Cache. Зададохме стойността въз основа на размера на RAM налична в системата. За да изберете оптималната стойност, в идеалния случай Qcache_lowmem_prunes променлива трябва да бъде нула. В противен случай, се препоръчва, че в процеса на MySQL, тази стойност се увеличава леко.
query_cache_type - параметър отговаря за кеша на работа. Тя може да се настрои на: ON, търсенето и OFF. Тази опция активира или деактивира MySQL Query Cache, ако е зададена стойност query_cache_type търсене, MySQL ще кешира заявки само Директива SQL_CACHE.
query_cache_wlock_invalidate - определя дали данните ще бъдат взети от кеша, ако на масата, до която те са заключени за четене. Ако стойността на параметъра се query_cache_wlock_invalidate OFF. тя ще бъде достъпна за получаване на данни от заключено маса Query Cache.
За да се следи MySQL Query кеша, използвайте командата:
Qcache_free_blocks - броят на свободните блокове в кеша. Колкото по-неизползваните блокове, толкова по-голяма степен на фрагментация на кеша. Ако в резултат на по-голямата част от исканията има малко количество примерни данни, е необходимо да се намали стойността на query_cache_min_res_unit на параметъра.
Qcache_total_blocks - броят на заетите блокове.
Qcache_free_memory - сумата, заделена памет на кеша.
Qcache_hits - броят на исканията изпълнени от кеша.
Qcache_inserts - броят на исканията запаметяват в кеш паметта.
Qcache_lowmem_prunes - броя на исканията, които са били изтрити поради кеш преливник.
Qcache_not_cached - броят на не-кеширана запитвания.
Qcache_queries_in_cache - броят на исканията в кеша.
Накратко механизъм на Запитване кеш е както следва. Под MySQL заявка кеш разпределя площ паметта на query_cache_size размер. За да напишете резултати заявка в сървъра кеш създава свободен размер query_cache_min_res_unit блок. След попълване на единица, сървърът създава нов празен блок и така нататък, докато всички данни на пробата, се записва в кеш паметта. Тогава областта на свободната памет на последния блок определя за свободна блок. Ако размерът на извадката е по-голяма от query_cache_limit зададена стойност. записът ще спре и заета памет, той е оправдан.
Раздробяването се случва, когато изтриете кеша донесе от кеша, когато резултатите от запис на новия обем на търсене на освободените единици са недостатъчни. С цел да се определи степента на фрагментация, че е необходимо да се обърне внимание на стойността на Qcache_free_blocks. В идеалния случай, стойността трябва да е равна на един, в случая на фрагментация - Qcache_total_blocks / 2. Можете също така да се определи какво кеша заявка силно фрагментиран, ако Qcache_lowmem_prunes стойност непрекъснато се увеличава, въпреки факта, че стойността на Qcache_free_memory далеч от нула.
За да дефрагментирате кеш паметта, използвайте командата:
За да се оцени ефективността на работа на кеша се използва формула Qcache_hits / (Qcache_hits + Com_select).