Некоторое время потратил на то, чтобы понять, требуется ли изменять параметры
query_cache_type
query_cache_size
в mariadb. Дело в том, что достаточно часто попадались сообщения об исключении этого параметра в MySQL, а остальные сообщения говорили о том, что на обслуживание кеша тратится столько времени, что есть смысл его включать только при десятикратном перевесе Qcache_hits над Qcache_inserts. Т.е. если внесли в кеш 1 раз и 10 раз оттуда прочитали, то это рационально. У меня на тот момент перевес был где-то 2/1. Естественно, я кеш отключил. В результате чего получил неплохой рост нагрузки на процессор.
Это явно не вязалось с всего лишь двукратным преимуществом чтений над вставками. Надо отметить, что после включения кеша картина вернулась к прежней.
Более того, мне удалось улучшить отношение чтений и записи, добавив к тем запросам, которые отрабатывали разово, подсказки. Например
SQL код:
select SQL_NO_CACHE row from table;
Это позволило не тратить на внесение в кеш и поиск там тех результатов, которые запрашиваются раз в большой интервал времени. Например, поиск наименования по штрихкоду.
Воту меня текущие показатели (перезапускал недавно)
Код:
MariaDB [(none)]> SHOW STATUS LIKE 'Qcache%';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 4664 |
| Qcache_free_memory | 13615352 |
| Qcache_hits | 652080 |
| Qcache_inserts | 165900 |
| Qcache_lowmem_prunes | 15464 |
| Qcache_not_cached | 14743 |
| Qcache_queries_in_cache | 23281 |
| Qcache_total_blocks | 52634 |
+-------------------------+----------+
Резюме: Использовать query_cache можно и нужно.