Mysql кешування


Любі друзі ,
в цій статті ми хочемо розповісти вам про те як можна знизити навантаження на MySQL сервер, при цьому не вдаючись до налаштувань самого скрипта. Мова сьогодні піде про такі можливості MySQL як кешування результатів запитів. Кешування запитів дозволяє збільшити продуктивність веб додатків, не вносячи при цьому якихось конструктивних змін в самі додатки. Суть його роботи полягає в тому що він запам'ятовує результати запитів в оперативній пам'яті і при повторному запиті, він не виконує запит, а просто одразу віддає результати з кеша. За замовчуванням кешування в MySQL відключено, тому включити його зможуть не всі, а тільки користувачі мають можливість виволненія запитів від імені суперкористувача MySQL або мають доступ до конфігураційним файлів MySQL сервера. Але цього і досить, тому що MySQL кешування ефективно тільки для високовідвідуваних проектів, а вони як правило мають VPS тарифи де доступ до настойкам є, або власні сервера. Якщо ваш проект має невелику відвідуваність, то в принципі вам це не потрібно, тому що особливої ​​помітною ефективності ви не досягнете.

MySQL містить вбудований механізм кешування запитів, який, не включений за замовчуванням. Для отримання стану про кешування, виконайте в phpMyAdmin запит:


В результаті ви отримаєте таблицю приблизно наступного змісту:


де query_cache_size показує розмір оперативної пам'яті виділеної під кеш запитів. Для того щоб включити кеш запитів і виділити під нього 16 мегабайт пам'яті необхідно виконати запит:


Запит необхідно виконувати з правами суперкористувача, а якщо ви хочете зробити це налаштування постійної, слід додати в my.cnf до підрозділу [mysqld] рядок:


і перезапустити MySQL сервер. Якщо у вас достатній резерв оперативної пам'яті, то розмір кеша можна збільшити. Але про це складно судити відразу після включення кеша, про необхідність збільшити кеш можна судити приблизно через добу послеего включення, але про це я розповім нижче.

Для перевірки состяния кеша необхідно виконати наступний запит:


Результатом буде таблиця приблизно такого змісту:


де Qcache_free_memory розмір вільної пам'яті кеша, Qcache_hits кількість запитів які відданих з кеша, Qcache_lowmem_prunes кількість звільненої пам'яті через брак кеша, в ідеалі повинно бути 0, якщо це не так, то значить пам'яті кеша вам не вистачає і його потрібно збільшити.

Ось власне і все.

Схожі статті