Ускорьте свой веб-сайт с MySQL Query Caching

Один из лучших способов ускорить работу вашего веб-приложения – включить кэширование запросов в вашей базе данных, которое кэширует часто используемые запросы SQL в памяти для практически мгновенного доступа к следующей странице, которая выполняет тот же запрос.

Причина, по которой этот метод является настолько мощным, заключается в том, что вам не нужно вносить какие-либо изменения в свое веб-приложение, вам просто нужно пожертвовать небольшим объемом памяти. Это не решит всех ваших проблем, но определенно не повредит.

Примечание. Если ваше приложение будет регулярно обновлять таблицы, кэш запросов будет постоянно очищаться, и вы не получите от этого большой или какой-либо выгоды. Это идеально подходит для приложения, которое в основном читает по базе данных, такого как блог WordPress. Это также не сработает, если вы работаете на виртуальном хостинге.

Включить кэширование при работающем сервере

Первое, что вам нужно сделать, это убедиться, что ваша установка MySQL действительно имеет поддержку кэширования запросов. Большинство дистрибутивов делают, но вы все равно должны проверить.

Вы захотите запустить эту команду из консоли MySQL, которая сообщит вам, доступно ли кэширование запросов.

 mysql> показывает переменные наподобие 'have_query_cache';
+ ------------------ + ------- +
| Переменное_имя | Значение |
+ ------------------ + ------- +
| have_query_cache | ДА |
+ ------------------ + ------- +

Не путайте это с тем, что кэширование запросов действительно включено, потому что большинство провайдеров хостинга не собираются включать это по умолчанию. Как ни странно, в моей установке Ubuntu Feisty она уже была включена…

Далее нам нужно проверить, включено ли кэширование запросов. Нам нужно проверить более одной переменной, поэтому мы можем сделать все это одновременно, проверив переменную query%

 mysql> показывать переменные наподобие 'query%';
+ ------------------------------ + --------- +
| Переменное_имя | Значение |
+ ------------------------------ + --------- +
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 8388608 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | ВЫКЛ |
| query_prealloc_size | 8192 |
+ ------------------------------ + --------- +

Вот важные пункты в списке и их значение:

  • query_cache_size – это размер кэша в байтах. Установка этого значения в 0 эффективно отключит кеширование.
  • query_cache_type – это значение должно быть включено или 1, чтобы кэширование запросов было включено по умолчанию.
  • query_cache_limit – это максимальный размер запроса (в байтах), который будет кэшироваться.

Если значение query_cache_size установлено в 0 или вы просто хотите изменить его, вам нужно будет выполнить следующую команду, учитывая, что это значение в байтах. Например, если вы хотите выделить 8 МБ для кэша, мы будем использовать 1024 * 1024 * 8 = 8388608 в качестве значения.

 SET GLOBAL query_cache_size = 8388608; 

Точно так же другие параметры могут быть установлены с тем же синтаксисом:

 SET GLOBAL query_cache_limit = 1048576; 
 SET GLOBAL  query_cache_type  = 1; 

Теперь, как мы узнаем, работает ли это на самом деле? Вы можете использовать команду SHOW STATUS, чтобы получить все переменные, начинающиеся с «Qc», чтобы посмотреть, что происходит под капотом.

 mysql> SHOW STATUS LIKE 'Qc%';
+ ------------------------- + -------- +
| Переменное_имя | Значение |
+ ------------------------- + -------- +
| Qcache_free_blocks | 65 |
| Qcache_free_memory | 201440 |
| Qcache_hits | 18868 |
| Qcache_inserts | 2940 |
| Qcache_lowmem_prunes | 665 |
| Qcache_not_cached | 246 |
| Qcache_queries_in_cache | 492 |
| Qcache_total_blocks | 1430 |
+ ------------------------- + -------- +
8 рядов в наборе (0,00 сек)

В статистике вы заметите, что у меня осталось много свободной памяти. Если на вашем сервере много черновиков с низким содержанием, вам может потребоваться увеличить это значение, но я бы не стал тратить слишком много памяти на кэширование запросов для веб-сервера … вам нужно оставить память доступной для apache, php, ruby ​​или все, что вы используете.

Включить в файле конфигурации

Если вы хотите, чтобы эти изменения выдержали перезагрузку или перезапуск сервера mysql, вам нужно добавить их в файл конфигурации /etc/mysql/my.cnf для MySQL. Обратите внимание, что он может находиться в другом месте вашей установки.

Откройте файл с помощью текстового редактора в режиме sudo или root, а затем добавьте эти значения, если их еще нет в файле. Если они существуют, просто раскомментируйте их.

 query_cache_size = 268435456
query_cache_type = 1
query_cache_limit = 1048576

Кэширование запросов может значительно повысить скорость вашего веб-приложения, особенно если ваше приложение в основном читает. Следите за состоянием, используя методы, описанные выше, и посмотрите, как оно работает со временем.

Оцените статью
TutoryBird.Ru
Добавить комментарий