SELECT
Buy this Reference Manual in softcover from Barnes & Noble!
С помощью команды FLUSH QUERY CACHE
можно дефрагментировать кэш запросов с целью лучшего использования его памяти. Эта команда не удалит ни одного запроса из кэша. Команда FLUSH TABLES
также записывает на диск содержимое кэша запросов.
Команда RESET QUERY CACHE
удаляет все результаты запросов из кэша запросов.
Можно контролировать функционирование кэша запросов в SHOW STATUS
:
Переменная | Описание |
Qcache_queries_in_cache | Количество запросов, зарегистрированных в кэше. |
Qcache_inserts | Количество запросов, добавленных в кэш. |
Qcache_hits | Количество результативных обращений в кэш. |
Qcache_not_cached | Количество не кэшированных запросов (не подлежащих кэшированию или из-за установок SQL_QUERY_CACHE_TYPE). |
Qcache_free_memory | Величина свободной памяти для кэша запросов. |
Qcache_total_blocks | Общее количество блоков в кэше запросов. |
Qcache_free_blocks | Количество свободных блоков памяти в кэше запросов. |
Общее количество запросов = Qcache_inserts + Qcache_hits + Qcache_not_cached
.
Кэш запросов использует блоки переменной длины, так что параметры Qcache_total_blocks
и Qcache_free_blocks
могут показывать фрагментацию памяти кэша запросов. После команды FLUSH QUERY CACHE
остается только один (большой) свободный блок.
Примечание: каждый запрос нуждается как минимум в двух блоках (один для текста данного запроса и один или больше - для результатов запроса). Для каждой используемой в запросе таблицы также требуется один блок, но если два или более запросов используют одну и ту же таблицу, требуется выделение только одного блока.
Posted by [name withheld] on Monday September 2 2002, @2:56am | [Delete] [Edit] |
I would be interested in the ability to *see* the
cached queries.
Also, do bind parameters properly come into play
with the query cache? For instance, would the
statement:
SELECT * FROM table_name WHERE id = ?
be cached and return the appropriate results when
executed with various id's?
Posted by on Tuesday October 1 2002, @4:05pm | [Delete] [Edit] |
MySQL does not support bind parameters. If you
are using them, then the API you are using must be
silently expanding them before passing the query
to MySQL. So yes, the query cache will perform
correctly.
Posted by Kim on Sunday January 12 2003, @9:28am | [Delete] [Edit] |
I wonder what would be an optimal value
for "Qcache_lowmem_prunes"...
Add your own comment.