MySQL监控-查看状态

1. 理解索引状态

Key_blocks_not_flushed: 键缓存内已经更改但还没有清空到硬盘上的键的数据块数量。

Key_blocks_unused: 键缓存内未使用的块数量。你可以使用该值来确定使用了多少键缓存; 

Key_blocks_used: 键缓存内使用的块数量。该值为高水平线标记,说明已经同时最多使用了多少块。

Key_read_requests: 从缓存读键的数据块的请求数。

Key_reads: 从硬盘读取键的数据块的次数。如果Key_reads较大,则Key_buffer_size值可能太小。可以用Key_reads/Key_read_requests计算缓存损失率。

Key_write_requests: 将键的数据块写入缓存的请求数。

Key_writes: 向硬盘写入将键的数据块的物理写操作的次数。

A: 索引读取命中率:(Key_read_requests-Key_reads)/Key_read_requests 

该值需要大于99%。若果在开启MySQL两个小时之后,这个值小于99%,则通常情况下需要增加key_buffer_size的值。

最好结合Uptime来看,因为这个值随着时间的变化而变化。

B: 索引缓存使用情况:1 - Key_blocks_unused * key_cache_block_size/ key_buffer_size

其中key_cache_block_size和key_buffer_size是服务器的配置参数。该值有些情况下不准确。

C:缓存使用最高值:Key_blocks_used* key_cache_block_size/ key_buffer_size

如果该值的大小在80%到90%,需要考虑增加key_buffer_size配置参数的值。

Handler_read_rnd: 根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该值较高。你可能使用了大量需要MySQL扫描整个表的查询或你的连接没有正确使用键。

Handler_read_rnd_next: 在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明你的表索引不正确或写入的查询没有利用索引。

Handler_read_first:索引中第一条被读的次数。如果较高,它建议服务器正执行大量全索引扫描;例如,SELECT col1 FROM foo,假定col1有索引。

Handler_read_key: 根据键读一行的请求数。如果较高,说明查询和表的索引正确。

Handler_read_next:按照键顺序读下一行的请求数。如果你用范围约束或如果执行索引扫描来查询索引列,该值增加。

Handler_read_prev:按照键顺序读前一行的请求数。该读方法主要用于优化ORDER BY ... DESC。


2. Questions

Questions:发送给服务器的所有请求,包括SQL查询,MySQL命令和协议通讯等。

Queries:只是SQL语句的个数。

Slow_queries:查询时间超过long_query_time秒的查询的个数。 该值是越小越好。

Com_xxx 语句计数变量表示每个xxx 语句执行的次数。每类语句有一个状态变量。 

Com_delete: 数据库执行删除语句的次数。
Com_insert: 数据库执行插入语句的次数。
Com_replace: 数据库执行更替语句的次数。
Com_select: 数据库执行查询语句的次数。
Com_update: 数据库执行更新语句的次数。

A: 平均查询数:Questions/Uptime 
数据库一段时间内的平均查询数。通过该值可以知道数据库有多忙。

B: 慢查询数:Slow_queries/Questions
慢查询占所有查询的比  例,该值应小于0.05%。 这个参数的值与配置参数log_slow_queries 是否打开慢查询日志和参数long_query_time 有关。

C:DMS语句分布:Com_select/Questions, (Com_delete+Com_insert+Com_replace+Com_update)/Questions,
Com_XXX_Other/Questions.
第一个值和第二个值的比较可以知道,应用程序是偏向查询还是偏向事务型的,从而可以决定数据库表应该使用何种数据库引擎。第三个值表示数据库忙于程序事务的情况,而不是处理SQL语句,这个值过高说明数据库只是空忙。

Com_rollback: 数据库执行回滚语句的次数, 如果该值过高,说明MySQL事务执行失败的次数很高。



3. Select and Sort

Select_full_join:没有使用索引的联接的数量。如果该值不为0,你应仔细检查表的索引。

Select_full_range_join:在引用的表中使用范围搜索的联接的数量。

Select_range:在第一个表中使用范围的联接的数量。一般情况不是关键问题,即使该值相当大。

Select_range_check:在每一行数据后对键值进行检查的不带键值的联接的数量。如果不为0,你应仔细检查表的索引。

Select_scan:对第一个表进行完全扫描的联接的数量。

Sort_merge_passes:排序算法已经执行的合并的数量。如果这个变量值较大,应增加sort_buffer_size系统变量的值。

Sort_range:在范围内执行的排序的数量。

Sort_rows:已经排序的行数。

Sort_scan:通过扫描表完成的排序的数量。

这些状态参数的值应该越小越好。


4. Query Cache

Query Cache, 首先需要当前的MySQL版本支持,第二要打开Query Cache,通过设置Query_cache_size。

QCACHE_free_blocks:查询缓存内自由内存块的数量。

QCACHE_free_memory:用于查询缓存的自由内存的数量。

QCACHE_hits:查询缓存被访问的次数。

QCACHE_inserts:加入到缓存的查询数量。

QCACHE_lowmem_prunes:由于内存较少从缓存删除的查询数量。通常情况下,如果该值过高,则表示参数系统的配置参数Query_cache_size值过小。

QCACHE_not_cached:非缓存查询数(不可缓存,或由于query_cache_type设定值未缓存)。

Qcache_queries_in_cache:登记到缓存内的查询的数量。

Qcache_total_blocks:查询缓存内的总块数。

A: Block Fragmnt (Fragmentation): QCACHE_free_blocks/Qcache_total_blocks

平均值应该在10%-20%,若果该值过高,需要考虑减少query_cache_min_res_unit的值。

B: QCACHE_hits: 该值越高越好,表示查询命中率高。

C: 缓存增删比:QCACHE_inserts/QCACHE_lowmem_prunes

通常情况下,该值为大于50%,插入量大于删除数量。如果该值为50%甚至更小,则表示查询缓存太小,不得不删除再插入。此时需要增加Query_cache_size的大小。

D: Hit:Insert: QCACHE_hits / QCACHE_inserts

该值体现了查询缓存效率,应该大于1。如果等于1则表示查询插入缓存只使用了一次就被替换掉了,如果小于1则表示有的查询插入缓存之后没有被使用过就被替换掉了。

 

5. 表锁

Table_locks_immediate:立即获得的表的锁的次数。

Table_locks_waited:不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。

A:锁比例:Table_locks_waited/(Table_locks_waited +Table_locks_immediate)

该值通常应小于10%


6. 其他状态参数

Open_tables:当前打开的表的数量。

Opened_tables已经打开的表的数量,uptime时间段内。

A:平均打开表数:Opened_tables/Uptime

该值通常情况下,应小于1表/s, 如果Opened_tables较大,table_cache 值可能太小。

Connections: 试图连接到(不管是否成功)MySQL服务器的连接数。

B:平均链接数:Connections/Uptime

该值通常情况下小于5/s.  影响参数max_connections。

Bytes_received: 从所有客户端接收到的字节数。

Bytes_sent: 发送给所有客户端的字节数。 

Threads_cached: 线程缓存内的线程的数量。

Threads_connected: 当前打开的连接的数量。

Threads_created: 创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。缓存访问率的计算方法Threads_created/Connections。

Threads_running: 激活的(非睡眠状态)线程数。

Created_tmp_disk_tables: 服务器执行语句时在硬盘上自动创建的临时表的数量。

Created_tmp_files: mysqld已经创建的临时文件的数量。

Created_tmp_files: 服务器执行语句时自动创建的内存中的临时表的数量。如果Created_tmp_disk_tables较大,你可能要增加tmp_table_size值使临时 表基于内存而不基于硬盘。

Uptime:MySQL运行统计时间,该值最好为24小时或以上,才具有代表性。


7. InnoDB参数

InnoDB的参数在MySQL5.0.2以上才有。

--------------buffer_pool---------------------------

Innodb_buffer_pool_pages_free: 空页数。

Innodb_buffer_pool_pages_latched: 在InnoDB缓冲池中锁定的页数。这是当前正读或写或由于其它原因不能清空或删除的页数。

Innodb_buffer_pool_pages_misc: 忙的页数,因为它们已经被分配优先用作管理。该值还可以计算为Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free -Innodb_buffer_pool_pages_data。

Innodb_buffer_pool_pages_total: 缓冲池总大小(页数)。

Innodb_buffer_pool_read_requests: InnoDB已经完成的逻辑读请求数。

Innodb_buffer_pool_reads: 不能满足InnoDB必须单页读取的缓冲池中的逻辑读数量。

Innodb_buffer_pool_wait_free: 一般情况,通过后台向InnoDB缓冲池写。但是,如果需要读或创建页,并且没有干净的页可用,则它还需要先等待页面清空。该计数器对等待实例进行记数。如果已经适当设置缓冲池大小,该值应小。

Innodb_buffer_pool_write_requests: 向InnoDB缓冲池的写数量。

--------------row_lock--------------------------------

Innodb_row_lock_current_waits:当前等待的待锁定的行数。

Innodb_row_lock_time:行锁定花费的总时间,单位毫秒。

Innodb_row_lock_time_avg: 行锁定的平均时间,单位毫秒。

Innodb_row_lock_time_max:行锁定的最长时间,单位毫秒。

Innodb_row_lock_waits:一行锁定必须等待的时间数。


其他标准:

(1)QPS(每秒Query量):QPS = Questions(or Queries) / seconds
mysql > show /*50000 global */ status like 'Question';

(2)TPS(每秒事务量):TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
mysql > show status like 'Com_rollback';

(3)key Buffer 命中率:key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

mysql> show status like 'Key%';

(4)InnoDB Buffer命中率
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

mysql> show status like 'innodb_buffer_pool_read%';

(5)Query Cache命中率:Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

mysql> show status like 'Qcache%';

(6)Table Cache状态量:mysql> show status like 'open%';

(7)Thread Cache 命中率:Thread_cache_hits = (1 - Threads_created / connections ) * 100%

mysql> show status like 'Thread%';

mysql> show status like 'Connections';

(8)锁定状态

mysql> show status like '%lock%';

(9)复制延时量
mysql > show slave status

(10) Tmp Table 状况(临时表状况)
mysql > show status like 'Create_tmp%';

(11) Binlog Cache 使用状况
mysql > show status like 'Binlog_cache%';

(12) Innodb_log_waits 量
mysql > show status like 'innodb_log_waits'; 

转载于:https://my.oschina.net/jiyayun/blog/97252

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值