Some Query Cache fixups.

Added info about two new Query Cache status variables.
parent b1291364
...@@ -35523,11 +35523,11 @@ dynamic content. ...@@ -35523,11 +35523,11 @@ dynamic content.
Following are some performance data for the query cache Following are some performance data for the query cache
(We got these by running the MySQL benchmark suite on a Linux Alpha (We got these by running the MySQL benchmark suite on a Linux Alpha
2x500 MHz with 2GB RAM and a 64MB query cache). 2x500 MHz with 2GB RAM and a 64MB query cache):
@itemize @bullet @itemize @bullet
@item @item
If want to disable the query cache code set @code{query_cache_size=0}. If you want to disable the query cache code set @code{query_cache_size=0}.
By disabling the query cache code there is no noticeable overhead. By disabling the query cache code there is no noticeable overhead.
@item @item
If all of the queries you're preforming are simple (such as selecting a If all of the queries you're preforming are simple (such as selecting a
...@@ -35578,7 +35578,7 @@ found rows is also stored in the cache. ...@@ -35578,7 +35578,7 @@ found rows is also stored in the cache.
If a table changes (@code{INSERT}, @code{UPDATE}, @code{DELETE}, If a table changes (@code{INSERT}, @code{UPDATE}, @code{DELETE},
@code{TRUNCATE}, @code{ALTER} or @code{DROP TABLE|DATABASE}), @code{TRUNCATE}, @code{ALTER} or @code{DROP TABLE|DATABASE}),
then all cached queries that used this table (possibly through a then all cached queries that used this table (possibly through a
MRG_MyISAM table!) become invalid and are removed from the cache. @code{MRG_MyISAM} table!) become invalid and are removed from the cache.
Currently all @code{InnoDB} tables are invalidated on @code{COMMIT}, Currently all @code{InnoDB} tables are invalidated on @code{COMMIT},
in the future this will be changed so only tables changed in the in the future this will be changed so only tables changed in the
...@@ -35695,18 +35695,30 @@ You can monitor query cache performance in @code{SHOW STATUS}: ...@@ -35695,18 +35695,30 @@ You can monitor query cache performance in @code{SHOW STATUS}:
@item @code{Qcache_inserts} @item @code{Qcache_inserts}
@tab Number of queries added to the cache. @tab Number of queries added to the cache.
@item @code{Qcache_hits} @item @code{Qcache_hits}
@tab Number of cache hits @tab Number of cache hits.
@item @code{Qcache_not_cached} @item @code{Qcache_not_cached}
@tab Number of non-cached queries @tab Number of non-cached queries
(not cachable, or due to SQL_QUERY_CACHE_TYPE) (not cachable, or due to @code{SQL_QUERY_CACHE_TYPE}).
@item @code{Qcache_free_memory} @item @code{Qcache_free_memory}
@tab Amount of free memory for query cache. @tab Amount of free memory for query cache.
@item @code{Qcache_total_blocks}
@tab Total number of blocks in query cache.
@item @code{Qcache_free_blocks}
@tab Number of free memory blocks in query cache.
@end multitable @end multitable
Please note:
Total number of queries = Total number of queries =
@code{Qcache_inserts} + @code{Qcache_hits} + @code{Qcache_not_cached}. @code{Qcache_inserts} + @code{Qcache_hits} + @code{Qcache_not_cached}.
The query cache uses variable length blocks, so @code{Qcache_total_blocks}
and @code{Qcache_free_blocks} may indicate query cache memory fragmentation.
After @code{FLUSH QUERY CACHE} only a single (big) free block remains.
Note: Every query needs a minimum of two blocks (one for the query text
and one or more for the query results). Also, every table that is used
by a query needs one block, but if two or more queries use same table
only one block needs to be allocated.
@node Table types, Clients, Reference, Top @node Table types, Clients, Reference, Top
@chapter MySQL Table Types @chapter MySQL Table Types
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment