MySQL内存相关的主要变量

一、查询缓存

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 就会认为表被打开了多次。增加此值会要求更多的文件描述符

你可能感兴趣的:(MySQL内存相关的主要变量)