mysql重要的status变量_mysql较为重要的状态变量

Innodb_log_waits

因log buffer不足导致等待的次数

相关参数:

Innodb_os_log_pending_fsyncs:redo log的pending fsync()次数

Threads_connected

当前open的线程数

相关参数:

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

Threads_running:正在运行的线程数

Threads_cached:cached的线程数

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_files:mysqld创建的临时文件数

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

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 index的col1 = const操作

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

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

Innodb_buffer_pool_wait_free

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

Buffer pool采用LRU算法:

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

Innodb_buffer_pool_size:  buffer pool大小

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

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

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

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_limit:warm子列的百分比(默认100),key cache buffer列表的分隔点,用于分隔host和warm子列表

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

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_cache的per-thread,这些文件可被所有线程共享;5.1引入;

与MyISAM不同,InnoDB的open table和open 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会显示该部分内存大小;

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

Select_full_join

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

相关参数:

Select_full_range_join:对referenced表使用range的joins数量

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

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

Select_scan:第一个表使用full scan的join数量

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完成的select由qcache_hits记录,而非com_select

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值