Статьи

Гибкий кеш запросов сервера MariaDB

Кэш запросов сервера MariaDB

Server Query Cache (QC) — это хорошо известная функция сервера MariaDB, которая кэширует операторы SQL и соответствующие наборы результатов. Если последующий запрос затем соответствует кэшированному оператору SQL, запрос может повторно использовать набор результатов. Кэш запросов также знает, как сделать недействительным кэш запросов, если таблица, соответствующая кэшированному запросу, изменена, например, с помощью UPDATE. Для получения дополнительной информации см. Кэш запросов в Базе знаний MariaDB .

В предыдущие десятилетия объем оперативной памяти был ограничен, диски были медленными, а процессоры имели одно ядро ​​и один поток. Если вы хотели больше ядер, стоимость была ограничена — зарплата до двух лет для двух процессорных машин. В те дни Query Cache был хорошей идеей. Вероятность того, что данные будут храниться в кэш-памяти ограниченного размера, была небольшой. Получение данных с диска было плохой идеей, так как имело дело с медленной работой магнитных носителей. Сегодня у нас более быстрые твердотельные диски и больше оперативной памяти, поэтому кэш запросов менее важен. Уменьшение зависимости от кэша уменьшает его негативные последствия, такие как блокировка мьютекса.

Объект взаимного исключения (мьютекс) — это программный объект, который позволяет нескольким программным потокам совместно использовать ресурс (например, папку), но не одновременно. Mutex настроен на разблокировку, когда данные больше не нужны или когда процедура завершена. Mutex создает эффект узкого места. Блокировка означает, что только один запрос может одновременно просматривать кэш запросов, а другие запросы должны ждать. Запрос, который должен ждать, чтобы посмотреть в кэш только для того, чтобы обнаружить, что его нет в кэше, будет замедлен, а не ускорен.

Вы также можете быть заинтересованы в: Улучшение производительности MariaDB с помощью профилирования запросов

Query Cache Flags

Кэш запросов имеет три режима: ON, OFFи DEMAND. В OFFрежиме ничего не будет кешироваться. В любом из режимов ONили с помощью DEMANDфлагов можно определить, какие операторы кэшируются.

В DEMANDрежиме кэшируются только указанные операторы. Чтобы указать, что оператор должен кэшироваться, SQL_CACHEв SELECTоператоре устанавливается флаг :


SQL