MySQL - как включить кеширование запросов - query cache size: различия между версиями

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Перейти к:навигация, поиск
(Новая страница: « Ставим значение: query_cache_size = 128M и перезапускаем mysql <br /> Проверяем командой mysql> show variab…»)
 
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
 +
[[Файл:B_1.gif |link=https://bit.ly/3tbFsd6| Доступная цена]]
  
 +
=== MySQL - как включить кеширование запросов - query cache size ===
  
 +
'''!Для MySQL 8 - удалена опция:!'''
 +
query_cache_size: Memory allocated to store results from old queries. Removed in MySQL 8.0.3.
 +
query_cache_type: Query cache type. Removed in MySQL 8.0.3.
 +
MySQL 8.0 will not support query cache, and users upgrading will be encouraged to use either Server-side Query Rewrite or ProxySQL as a man-in-the-middle cache
 +
'''!Для MySQL 8 - нужно ставить ProxySQL https://proxysql.com/documentation/ProxySQL-Configuration/!'''<br>
  
 
+
Для '''MySQL 5.7''' или ниже версии ставим значение:
Ставим значение:
+
query_cache_type = 1
 
  query_cache_size = 128M
 
  query_cache_size = 128M
  
 +
query_cache_type - включает работу кэша MySQL <br>
 
и перезапускаем mysql  <br />
 
и перезапускаем mysql  <br />
  
Строка 43: Строка 51:
 
  '''Qcache_hits''' количество запросов которые отданных из кеша
 
  '''Qcache_hits''' количество запросов которые отданных из кеша
 
  '''Qcache_free_memory''' размер свободной памяти кеша
 
  '''Qcache_free_memory''' размер свободной памяти кеша
 +
 +
 +
Ограничить кэш на один запрос sql можно с помощь
 +
query_cache_limit = 32M
  
  

Текущая версия на 12:23, 4 октября 2021

Доступная цена

MySQL - как включить кеширование запросов - query cache size

!Для MySQL 8 - удалена опция:!

query_cache_size: Memory allocated to store results from old queries. Removed in MySQL 8.0.3.
query_cache_type: Query cache type. Removed in MySQL 8.0.3.
MySQL 8.0 will not support query cache, and users upgrading will be encouraged to use either Server-side Query Rewrite or ProxySQL as a man-in-the-middle cache

!Для MySQL 8 - нужно ставить ProxySQL https://proxysql.com/documentation/ProxySQL-Configuration/!

Для MySQL 5.7 или ниже версии ставим значение:

query_cache_type = 1
query_cache_size = 128M

query_cache_type - включает работу кэша MySQL
и перезапускаем mysql


Проверяем командой

mysql> show variables like 'query_cache%';
+------------------------------+-----------+
| Variable_name                | Value     |
+------------------------------+-----------+
| query_cache_limit            | 1048576   |
| query_cache_min_res_unit     | 4096      |
| query_cache_size             | 268435456 |
| query_cache_type             | ON        |
| query_cache_wlock_invalidate | OFF       |
+------------------------------+-----------+
5 rows in set (0.00 sec)


После этого в течении дня мониторим Qcache_lowmem_prunes - количество освобожденной памяти из за нехватки кеша:

mysql> SHOW GLOBAL STATUS LIKE 'Qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 2432      |
| Qcache_free_memory      | 183739480 |
| Qcache_hits             | 43241     |
| Qcache_inserts          | 23768     |
| Qcache_lowmem_prunes    | 0         |
| Qcache_not_cached       | 18702     |
| Qcache_queries_in_cache | 10302     |
| Qcache_total_blocks     | 23400     |
+-------------------------+-----------+
8 rows in set (0.00 sec)

Если значение не 0, значит кэша не хватает. В идеале должно быть 0.

Qcache_hits количество запросов которые отданных из кеша
Qcache_free_memory размер свободной памяти кеша


Ограничить кэш на один запрос sql можно с помощь

query_cache_limit = 32M


Для DLE - нужно включить "Кешировать счетчик просмотров новостей":

# vi engine/data/config.php
'cache_count' => '1',
Кешировать счетчик просмотров новостей
Если 'Нет', то счетчик просмотров новостей будет обновляться с каждым просмотром. Если 'Да', количество просмотров будет записываться в другую таблицу и обновляться каждые 4 часа. Включение данной опции позволяет сэкономить процессорное время для больших сайтов.



Почему нельзя ставить большое значение:

При слишком большом значении query_cache_size - идут накладные расходы на управление самим кешем, что вызовет понижение проивзодительности.