6.9 Кэш запросов в MySQL
Начиная с версии 4.0.1 сервер MySQL снабжен кэшем запросов. В процессе
работы кэш запросов хранит текст запроса SELECT
вместе с соответствующим
результатом, который посылается клиенту. При получении другого идентичного
запроса сервер может извлечь результаты из кэша запросов, а не
анализировать и выполнять снова тот же самый запрос.
Кэш запросов особенно полезен в средах, где (некоторые) таблицы не
обновляются слишком часто и присутствует много идентичных запросов. Эта
ситуация типична для многих веб-серверов с обширным активным
информационным наполнением.
Ниже приведены некоторые данные функционирования для кэша запросов (они
получены во время работы тестового комплекта MySQL под Linux Alpha 2x500
МГц с 2Гб ОЗУ и 604-мегабайтным кэшем запросов):
-
Для блокировки кода кэша запросов необходимо установить
query_cache_size=0
. При отключении кода кэша запросов не наблюдалось
заметных непроизводительных затрат (кэш запросов может быть исключен
из кода с помощью параметра конфигурации --without-query-cache
).
-
Если все производимые запросы являются простыми (такими как выбор
строки из таблицы с одной строкой), но различаются настолько, что не
могут быть кэшированы, непроизводительные затраты при активном
состоянии кэша запросов составляют 13%. Это можно было бы
рассматривать как сценарий наиболее неблагоприятного варианта. Однако
в реальной жизни запросы более сложны, чем приведенный простой пример,
так что непроизводительные затраты обычно значительно ниже.
-
Поиск строки в таблице с одной строкой происходит на 238% быстрее.
Можно рассматривать эту величину, как близкую к минимальному
увеличению быстродействия, ожидаемого при кэшировании запроса.
Главы