ITPub博客

首页 > 数据库 > MySQL > mysql较为重要的状态变量

mysql较为重要的状态变量

MySQL 作者:wzgchen 时间:2015-08-19 15:37:32 0 删除 编辑




Innodb_log_waits

log buffer不足导致等待的次数

相关参数:

Innodb_os_log_pending_fsyncsredo logpending fsync()次数  



Threads_connected      

当前open的线程数

相关参数:

Threads_created:创建的线程数,值过大可增加thread_cache_size

Threads_running:正在运行的线程数

Threads_cachedcached的线程数

Connections:试图登录mysql的连接数,threads_created/connections用以计算cache miss rate


Max_used_connections:自启动以来最大并发连接数



Created_tmp_disk_tables

创建的on-disk临时表数量

即便internal temp table初始建于内存中,当其大于min(tmp_table_size,max_heap_table_size)时,会自动转换为MyiSAM表存入磁盘

可将其与created_tmp_tables比较以确认是否有改进的余地

相关参数:

Created_tmp_filesmysqld创建的临时文件数

Created_tmp_tables:执行语句过程中生成的internal临时表数量

http://space.itpub.net/15480802/viewspace-757553  

 

Handler_read_first       

读取索引第一个entry的次数,如果该指标很高说明系统进行了大量的full index scan,例如select col1 from foo(col1列有索引)

相关参数:

Handler_read_key:通过key值读取行的次数,说明query很好的利用了索引

Handler_read_last(5.6新变量)读取索引最后key的次数,order by desc使用

Handler_read_prev:主要用于order by desc

Handler_read_next:依据key顺序读取下一行,index range scan或者non-unique indexcol1 = const操作

Handler_read_rnd:依据fixed pos读取行的次数

Handler_read_rnd_next:读取当前下一行,大量全表扫描时此值会比较高



Innodb_buffer_pool_wait_free              

说明buffer pool没有空闲内存了,有多种原因,最常见的是Buffer pool太;

Buffer pool采用LRU算法:

所有buffer块位于同一列表,其中后3/8old,每当新读入一个数据块时,先从队尾移除同等块数然后插入到old子列的头部,如再次访问该块则将其移至new子列的头部

Innodb_buffer_pool_size:  buffer pool大小

Innodb_buffer_pool_instances: buffer pool数量,buffer pool至少为1G时才能生效

Innodb_old_blocks_pct: 范围– 95, 默认为373/8,指定old子列的比重

Innodb_old_blocks_time: ms为单位,新插入old子列的buffer块必须等待指定时间后才能移入new列,适用于one-time scan频繁的操作,以避免经常访问的数据块被剔出buffer pool

http://space.itpub.net/15480802/viewspace-755582  



Key_reads         

MyiSAM索引块从磁盘读入key cache的次数,此系物理读

相关参数:

Key_read_requests:向key cache请求读次数,key_reads/key_read_requests可以计算cache miss rate

Key_write_requests:向key cache写请求次数

Key_writes:从key cache向磁盘写block次数

5.5仅支持一个结构化变量,即key cache,其包含4个部件

Key_buffer_size

Key_cache_block_size:单个块大小,默认1k

Key_cache_division_limitwarm子列的百分比(默认100)key cache buffer列表的分隔点,用于分隔hostwarm子列表

Key_cache_age_threshold:页在hot子列中的生命周期,值越小则越快的移至warm列表

默认采用LRU算法,也支持名为中间点插入机制midpoint insertion strategy

索引页刚读入key cache时,被放在warm列的尾部,被访问3次后则移到hot列尾并循环移动,如果在hot列头闲置连续N次都没访问到,则会被移到warm列头,成为被剔出cache的首选;

N= block no* key_cache_age_threshold/100

http://space.itpub.net/15480802/viewspace-755582  



Open_tables

打开表的数量,如果此值很小而open_table_cache过大,则可适当调小后者

相关参数:

Opened_files:通过my_open()打开过的文件数

Opened_table_definitions:被cached过的.frm文件数量

Opend_tables:被打开过的表数量,如果此值太大有可能table_open_cache过小所致

Open_files:当前open的文件数(不包括socket/pipe)

Open_table_definition:当前cached.frm数量

5.6.6新加table_open_cache_hits/table_open_cache_misses

Table_definition_cache:存储frm文件,不同于open_table_cacheper-thread,这些文件可被所有线程共享;5.1引入;

MyISAM不同,InnoDBopen tableopen file并无直接联系,即打开frm表时其相应的ibd文件可能处于关闭状态;

InnoDB只会用到table_definiton_cache,不会使用table_open_cache

frm文件保存于table_definition_cache中,而idb则由innodb_open_files决定(前提是开启了innodb_file_per_table)

除此之外,innodb还在内存中维护一个data dictionary,用于记录所有访问过的表,即便表已经关闭了也不释放,show innodb status会显示该部分内存大小;

如果这两个参数设置过大,有可能会消耗较多内存

http://www.taobaodba.com/html/1367_mysql_memory_exhausted.html/comment-page-1#comment-19089  



Select_full_join              

执行表扫描的joins数量(没有使用索引)

相关参数:

Select_full_range_join:对referenced表使用rangejoins数量

Select_range:第一个表使用rangesjoin数量,通常即便很高也不会引起性能问题

Select_range_check:没有使用keyjoin数量(The number of joins without keys that check for key usage after each row),如果不等于0则需仔细检查表的索引

Select_scan:第一个表使用full scanjoin数量



Slow_queries

Slow query的数量(运行时间超过long_query_time)

 

Uptime               

自系统启动以来的秒数



Com_xxx

记录xxx的执行次数,比如com_delete记录delete执行次数,com_commit事务提交数

TPS=(com_commit + com_rollback)/seconds

QPS=queries/seconds

注:通过query cache完成的selectqcache_hits记录,而非com_select

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91975/viewspace-1776399/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-05-01

  • 博文量
    383
  • 访问量
    179287