http://blog.chinaunix.net/uid-10661836-id-4278807.html
在MySQL5.6的Information_Schema引入新的INNODB_METRICS,此表用来监控InnoDB运行是否正常,并且该表包括很多计数器
mysql> select version();
+------------------+
| version() |
+------------------+
| 5.6.28-debug-log |
+------------------+
1 row in set (0.00 sec)

此表的结构:

mysql> desc INNODB_METRICS;
+-----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| NAME | varchar(193) | NO | | | |
| SUBSYSTEM | varchar(193) | NO | | | |
| COUNT | bigint(21) | NO | | 0 | |
| MAX_COUNT | bigint(21) | YES | | NULL | |
| MIN_COUNT | bigint(21) | YES | | NULL | |
| AVG_COUNT | double | YES | | NULL | |
| COUNT_RESET | bigint(21) | NO | | 0 | |
| MAX_COUNT_RESET | bigint(21) | YES | | NULL | |
| MIN_COUNT_RESET | bigint(21) | YES | | NULL | |
| AVG_COUNT_RESET | double | YES | | NULL | |
| TIME_ENABLED | datetime | YES | | NULL | |
| TIME_DISABLED | datetime | YES | | NULL | |
| TIME_ELAPSED | bigint(21) | YES | | NULL | |
| TIME_RESET | datetime | YES | | NULL | |
| STATUS | varchar(193) | NO | | | |
| TYPE | varchar(193) | NO | | | |
| COMMENT | varchar(193) | NO | | | |
+-----------------+--------------+------+-----+---------+-------+
17 rows in set (0.19 sec)

总计数器:

mysql>  select count(*) from INNODB_METRICS;
+----------+
| count(*) |
+----------+
| 214 |
+----------+
1 row in set (0.19 sec)

默认开启的计数器

mysql> select count(*) from innodb_metrics where status = 'enabled';
+----------+
| count(*) |
+----------+
| 63 |
+----------+
1 row in set (0.18 sec)

开启、关闭、重置计数器的参数,主要有以下几个

mysql>  show variables like '%monitor%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_monitor_disable | |
| innodb_monitor_enable | |
| innodb_monitor_reset | |
| innodb_monitor_reset_all | |
+--------------------------+-------+
4 rows in set (0.00 sec)

我们以metadata相关的计数器为例,演示开启、关闭、重置.默认此计数器是关闭状态.

mysql> select status, name, subsystem from INNODB_METRICS where status = 'disabled' and subsystem='metadata';
+----------+--------------------------------+-----------+
| status | name | subsystem |
+----------+--------------------------------+-----------+
| disabled | metadata_table_handles_opened | metadata |
| disabled | metadata_table_handles_closed | metadata |
| disabled | metadata_table_reference_count | metadata |
+----------+--------------------------------+-----------+
3 rows in set (0.01 sec)

开启:

mysql>  set global innodb_monitor_enable = 'metadata_%';
Query OK, 0 rows affected (0.01 sec)
mysql>  select status, name, subsystem from INNODB_METRICS where subsystem='metadata';
+---------+--------------------------------+-----------+
| status | name | subsystem |
+---------+--------------------------------+-----------+
| enabled | metadata_table_handles_opened | metadata |
| enabled | metadata_table_handles_closed | metadata |
| enabled | metadata_table_reference_count | metadata |
| enabled | metadata_mem_pool_size | metadata |
+---------+--------------------------------+-----------+
4 rows in set (0.01 sec)

关闭:

mysql> set global innodb_monitor_disable = 'metadata_%';
Query OK, 0 rows affected (0.00 sec)

重置所有metadata的所有值:

mysql>  set global innodb_monitor_reset_all = 'metadata_%';
Query OK, 0 rows affected (0.00 sec)

重置计数器值:

mysql>  set global innodb_monitor_reset = 'metadata_%';
Query OK, 0 rows affected (0.00 sec)

打开与关闭所有计数器

mysql> set global innodb_monitor_disable = all;
Query OK, 0 rows affected (0.18 sec) mysql> set global innodb_monitor_enable = all;
Query OK, 0 rows affected (0.00 sec)

计数器既支持单个开启也支持模糊匹配,所以配置起来还是非常灵活多变的.

模块对应的子系统(此翻译为个人理解,如有错误请指出.)
module_metadata (subsystem = metadata)           表计数器开启、关闭

module_lock (subsystem = lock)                            锁监控死锁、表锁,锁统计信息等等.

module_buffer (subsystem = buffer)                     buffer_pool

module_buf_page (subsystem = buffer_page_io)        buffer的写操作

module_os (subsystem = os)                                        操作系统信息

module_trx (subsystem = transaction)                           事务信息监控回滚、只读事务等等信息

module_purge (subsystem = purge)                               purge删除信息

module_compress (subsystem = compression)              表压缩相关信息

module_file (subsystem = file_system)                           打开文件数

module_index (subsystem = index)                                索引相关信息,统计索引信息、索引分裂等等

module_adaptive_hash (subsystem = adaptive_hash_index)     自适应哈希

module_ibuf_system (subsystem = change_buffer)                  '这个还不知道'囧

module_srv (subsystem = server)                                            server运行状态信息

module_ddl (subsystem = ddl)                                                  ddl信息

module_dml (subsystem = dml)                                               读、写、更新、删除信息

module_log (subsystem = recovery)                                         flush,同步异步刷日志等等信息

module_icp (subsystem = icp)                                                   icp通信? 囧,'这个不知道怎么理解'

 

这里举个例子以dml_insert为例

 
mysql> select name,subsystem,status,count from information_schema.innodb_metrics  where name like "dml%";
+-------------+-----------+----------+-------+
| name | subsystem | status | count |
+-------------+-----------+----------+-------+
| dml_reads | dml | disabled | 0 |
| dml_inserts | dml | disabled | 0 |
| dml_deletes | dml | disabled | 0 |
| dml_updates | dml | disabled | 0 |
+-------------+-----------+----------+-------+
 mysql>  set global innodb_monitor_enable = 'dml_inserts';
Query OK, 0 rows affected (0.00 sec)

  mysql> select status, name, subsystem from INNODB_METRICS where status = 'enabled' and subsystem='dml';
  +---------+-------------+-----------+
  | status  | name      | subsystem |
  +---------+-------------+-----------+
  | enabled | dml_inserts | dml      |
  +---------+-------------+-----------+
  1 row in set (0.00 sec)


mysql>  select * from information_schema.innodb_metrics where name='dml_inserts'\G;
*************************** 1. row ***************************
NAME: dml_inserts
SUBSYSTEM: dml
COUNT: 0
MAX_COUNT: 0
MIN_COUNT: NULL
AVG_COUNT: 0
COUNT_RESET: 0
MAX_COUNT_RESET: 0
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
TIME_ENABLED: 2016-06-27 21:30:56
TIME_DISABLED: NULL
TIME_ELAPSED: 138
TIME_RESET: NULL
STATUS: enabled
TYPE: status_counter
COMMENT: Number of rows inserted
1 row in set (0.21 sec)

测试:

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
mysql> create table test (id int);
Query OK, 0 rows affected (0.24 sec) mysql> insert into test values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
Query OK, 10 rows affected (0.21 sec)
Records: 10 Duplicates: 0 Warnings: 0 mysql> insert into test values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
Query OK, 10 rows affected (0.18 sec)
Records: 10 Duplicates: 0 Warnings: 0 mysql> insert into test values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
Query OK, 10 rows affected (0.01 sec)
Records: 10 Duplicates: 0 Warnings: 0 mysql> insert into test values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
Query OK, 10 rows affected (0.01 sec)
Records: 10 Duplicates: 0 Warnings: 0 mysql> insert into test values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
Query OK, 10 rows affected (0.01 sec)
Records: 10 Duplicates: 0 Warnings: 0 mysql> select * from information_schema.innodb_metrics where name='dml_inserts'\G;
*************************** 1. row ***************************
NAME: dml_inserts
SUBSYSTEM: dml
COUNT: 50
MAX_COUNT: 50
MIN_COUNT: NULL
AVG_COUNT: 0.04950495049504951
COUNT_RESET: 50
MAX_COUNT_RESET: 50
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
TIME_ENABLED: 2016-06-27 21:30:56
TIME_DISABLED: NULL
TIME_ELAPSED: 1010
TIME_RESET: NULL
STATUS: enabled
TYPE: status_counter
COMMENT: Number of rows inserted
1 row in set (0.19 sec)

这时我们重置计数器

mysql>  set global innodb_monitor_reset = module_dml;
Query OK, 0 rows affected (0.00 sec) mysql> select * from information_schema.innodb_metrics where name='dml_inserts'\G;
*************************** 1. row ***************************
NAME: dml_inserts
SUBSYSTEM: dml
COUNT: 50
MAX_COUNT: 50
MIN_COUNT: NULL
AVG_COUNT: 0.04428697962798937
COUNT_RESET: 0
MAX_COUNT_RESET: 0
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: 0
TIME_ENABLED: 2016-06-27 21:30:56
TIME_DISABLED: NULL
TIME_ELAPSED: 1129
TIME_RESET: 2016-06-27 21:49:34
STATUS: enabled
TYPE: status_counter
COMMENT: Number of rows inserted
1 row in set (0.01 sec)

当我们重置计数器的时候,只会影响count_reset、max_count_reset.(不知道会不会影响avg_count_reset)

那么如果我们重置所有,那么它会把所有值全部重置

mysql> set global innodb_monitor_disable  = module_dml;
Query OK, 0 rows affected (0.00 sec) mysql> set global innodb_monitor_reset_all = module_dml;
Query OK, 0 rows affected (0.00 sec) mysql> select * from information_schema.innodb_metrics where name='dml_inserts'\G
*************************** 1. row ***************************
NAME: dml_inserts
SUBSYSTEM: dml
COUNT: 0
MAX_COUNT: NULL
MIN_COUNT: NULL
AVG_COUNT: NULL
COUNT_RESET: 0
MAX_COUNT_RESET: NULL
MIN_COUNT_RESET: NULL
AVG_COUNT_RESET: NULL
TIME_ENABLED: NULL
TIME_DISABLED: NULL
TIME_ELAPSED: NULL
TIME_RESET: NULL
STATUS: disabled
TYPE: status_counter
COMMENT: Number of rows inserted
1 row in set (0.00 sec)

此文章部分内容参考MySQL官方文档和Oracle英文Blog,地址如下:

https://blogs.oracle.com/mysqlinnodb/entry/get_started_with_innodb_metrics

MySQL5.6监控表之INNODB_METRICS的更多相关文章

  1. SQL Server 更改跟踪(Chang Tracking)监控表数据

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 主要区别与对比(Compare) 实现监控表数据步骤(Process) 参考文献(Refere ...

  2. 利用__index和__newindex实现默认值表、监控表、只读表

    __index和__newindex实际上相当于是在读写表的时候分别加了一道过滤的逻辑,让读写表的操作可以被监控或说回调,利用这个特性可以实现一些带有特殊功能的表. 带有默认值的表: setdefau ...

  3. 利用__index和__newindex实现默认值表、监控表、只读表(转)

    __index和__newindex实际上相当于是在读写表的时候分别加了一道过滤的逻辑,让读写表的操作可以被监控或说回调,利用这个特性可以实现一些带有特殊功能的表. 带有默认值的表: setdefau ...

  4. 【转载,备忘】SQL Server 更改跟踪(Chang Tracking)监控表数据

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 主要区别与对比(Compare) 实现监控表数据步骤(Process) 参考文献(Refere ...

  5. 光年数据分析表(seo数据监控表和爬虫数据监控表)

    http://www.wocaoseo.com/thread-307-1-1.html 光年seo培训想必很多人都知道,他们提出的数据化操作影响了很多的seo从业者,下面是他们的2个数据表,搜集于网络 ...

  6. SQL Server 变更数据捕获(CDC)监控表数据

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现过程(Realization) 补充说明(Addon) 参考文献(References) ...

  7. SQL Server ---(CDC)监控表数据(转译)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现过程(Realization) 补充说明(Addon) 参考文献(References) ...

  8. MySQL5.7 import表结构报错超出表空间界限

    事后测试了一下,一下方法就是垃圾,看看可以,别跟着学!!! 数据库重启后,问题依然暴露出来了,参数什么的都是扯,擦 记录一个困扰我好几天的问题.先贴上报错: space name jxtms/Cost ...

  9. Mysql5.7 单表 500万数据迁移到新表的快速实现方案

    开发过程中需要把一个已有500万条记录的表数据同步到另一个新表中,刚好体验下Mysql官方推荐的大数据迁移的方案:SELECT INTO OUTFILE,LOAD DATA INFILE Mysql ...

随机推荐

  1. javascript第二遍基础学习笔记(二)

    一.操作符 1.一元操作符: 自加自减(分前置和后置2种):++.-- 区别:前置的先自加或自减,后进行计算:而后置的是先进行计算,后自加或自减(在其会产生负面影响时才能体现区别): ; i++; / ...

  2. LCIS tyvj1071 DP优化

    思路: f[i][j]表示n1串第i个与n2串第j个且以j结尾的LCIS长度. 很好想的一个DP. 然后难点是优化.这道题也算是用到了DP优化的一个经典类型吧. 可以这样说,这类DP优化的起因是发现重 ...

  3. Freemarker 对null值报错的处理

    忽略null值 假设前提:user.name为null ${user.name},异常 ${user.name!},显示空白 ${user.name!'vakin'},若user.name不为空则显示 ...

  4. USB Type-C“三剑客”: 连接器、控制器和电缆

    USB Type-C™是最新的有关电缆布线的USB连接器标准.您会看到,从笔记本电脑.智能手机.闪存到视频系统,这些设备上有一个小型可逆的Type-C连接器.由于Type-C电缆既可以给主机和设备提供 ...

  5. 《attodiskbenchmarks-v2.47》说明文件

    对于用电脑方便且不喜欢在手机上乱装软件的我来说,很喜欢,特此整理,并在miui首发. 一.软件介绍 ATTO Disk Benchmark是一款电脑端使用的专业测速软件,该软件非常小巧,但却很专业,是 ...

  6. Android ViewDragHelper源码解析

    在自定义ViewGroup的过程中,如果涉及到View的拖动滑动,ViewDragHelper的使用应该是少不了的,它提供了一系列用于用户拖动子View的辅助方法和相关的状态记录,像Navigatio ...

  7. [cocos2d] 显示状态与文字

    前言: 对于显示数值与文字一般有三种方式可以使用: CCLabelTTF .CCLabelBMFont .CCLabelAtlas 详细区别可参考:cocos2d 中添加显示文字的三种方式(CCLab ...

  8. React入门1

    React教程 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  9. ELK之topbeat部署

    topbeat定期收集系统信息如每个进程信息.负载.内存.磁盘等等,然后将数据发送到elasticsearch进行索引,最后通过kibana进行展示. 下面是具体的安装及配置步骤: 1.安装topbe ...

  10. SVN服务器及客户端的使用

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址:http://s ...