一、查询缓存
1. 查询缓存命中率计算公式:
Qcache_hits/(Qcache_hits + Com_select)
2. 状态变量
Qcache_hits
查询缓存命中数,即可以从查询缓存中直接返回结果的次数
Qcache_not_cached
不可缓存查询数,current_date等不确定函数或者查询结果大于query_cache_limit使得查询不可缓存
Qcahce_inserts
被加入缓存的查询数,包括新查询或缓存失效后重新被缓存的查询
Qcache_free_blocks
查询缓存中空闲块数,如果此值过高,说明缓存碎片严重
Qcache_lowmem_prunes
因缓存不足导致的缓存失效数
Com_*
Com_delete、Com_insert、Com_update等数据修改操作数,可导致缓存失效
3. 系统变量
query_cache_limit
限制可缓存查询的字节数,查询结果超过此值的查询不可缓存
query_cache_size
为查询缓存分配的总字节数
query_cache_type
0禁用缓存,但并不回收查询缓存区;1启用缓存,除了以 SELECT SQL_NO_CACHE 开头的查询;2只对以 SELECT SQL_CACHE 开头的查询启用缓存
二、MyISAM 键缓存
1. 键缓存命中率:
100 - ( ( Key_reads * 100 ) / Key_read_requests )
2. 键缓存使用百分比:
100 - ( ( Key_blocks_unused * Key_cache_block_size ) * 100 / Key_buffer_size )
3. 状态变量
Key_blocks_unused
未使用的键缓存块数
Key_reads
从磁盘读取键块的次数
Key_read_requests
请求从键缓存读取键块的次数
4. 系统变量
key_buffer_size
键缓存的字节数,最大4G
key_cache_block_size
一个键缓存块的字节数
三、InnoDB 缓冲池
1. 系统变量
innodb_max_dirty_pages_pct
脏页所占缓冲池的百分比,InnoDB 主线程把缓冲池里的脏页写回磁盘,保证脏页所占比例不超过此值
innodb_buffer_pool_size
InnoDB 内存缓冲池字节数
四、线程缓存
1. 状态变量
Threads_created
为连接建立的线程数
2. 系统变量
threads_cache_size
服务器可缓存的线程数。MySQL 只有在连接关闭的时候才会把线程加入缓存,也只有在创建新连接的时候才从缓存中移除线程
五、表缓存
1. 系统变量
table_definition_cache
可以缓存的表定义数,此值是全局的,可以在所有连接中共享
table_open_cache
打开表的缓存数,此值是基于每个线程、每个使用的表。当不同的查询同时访问某个表,或者某个查询在子查询或自连接中引用了一个表多次,MySQL 就会认为表被打开了多次。增加此值会要求更多的文件描述符
--转自