MySQL的Performance Schema库

Performance SchemaMySQL自带的、较为底层的性能监控特性,提供一系列、具备自定义收集粒度的监控体系。对MySQL服务执行过程中的各项事件(Events)的分析尤为重视

Performance Schema的精细化控制,主要通过performance_schema库下的一系列setup表来实现

(system@localhost) [(none)]> use performance_schema;

Database changed

(system@localhost) [performance_schema]> show tables like 'setup%';

+---------------------------------------+

| Tables_in_performance_schema (setup%) |

+---------------------------------------+

| setup_actors                          |

| setup_consumers                       |

| setup_instruments                     |

| setup_objects                         |

| setup_timers                          |

+---------------------------------------+

5 rows in set (0.00 sec)

setup_actors:用来控制要监控的线程,默认所有线程全部监控

setup_consumers:用来控制哪类事件信息将被保存

setup_instruments:用来控制哪些事件信息将被收集,以及是否记录时间

setup_objects:用来控制被监控的对象,默认所有对象都被监控

setup_timers:用来控制各项事件所使用的计时器

 

SQL语句执行过程中的事件,在performance_schema库中,setup_consumerssetup_instruments两表中记录的正是要收集的事件类型

(system@localhost) [performance_schema]> select * from setup_consumers;

+--------------------------------+---------+

| NAME                           | ENABLED |

+--------------------------------+---------+

| events_stages_current          | NO      |

| events_stages_history          | NO      |

| events_stages_history_long     | NO      |

| events_statements_current      | YES     |

| events_statements_history      | NO      |

| events_statements_history_long | NO      |

| events_waits_current           | NO      |

| events_waits_history           | NO      |

| events_waits_history_long      | NO      |

| global_instrumentation         | YES     |

| thread_instrumentation         | YES     |

| statements_digest              | YES     |

+--------------------------------+---------+

12 rows in set (0.00 sec)

重点关注events_stages%,用来保存SQL语句执行过程中各类事件的列表,默认都是禁用

setup_consumers负责的是要监控的事件类型

(system@localhost) [performance_schema]> update setup_consumers set enabled='YES' where name like 'events_stages%';

Query OK, 3 rows affected (0.06 sec)

Rows matched: 3  Changed: 3  Warnings: 0

setup_consumers配置表中:

名为global_instrumentation的事件,具有最高优先级,用于指定全局级别的信息收集,如果禁用,所有事件都不会被收集

名为thread_instrumentation的事件,用来指定线程级别的信息收集

 

开启关注的事件

(system@localhost) [performance_schema]> update setup_instruments set enabled='YES',

timed='YES' where name like 'stage/sql/%';

Query OK, 107 rows affected (0.00 sec)

Rows matched: 107  Changed: 107  Warnings: 0

所有语句触发的事件都保存在events_stages_history表中

events_stages_current

events_stages_history

events_stages_history_long

 

MySQL在使用过程中遇到访问速度慢,或者无法响应,通常是第一时间登陆MySQL,执行SHOW PROCESSLISTSHOW FULL PROCESSLIST语句,查看当前连接的会话状态

mysqladmin命令有一个debug参数,可以分析当前MySQL服务的状态信息,同时也可以用来帮助我们定位当前锁的详细情况

[root@mysql1 /]# mysqladmin -usystem -p123456 -S /data/mysqldata/3306/mysql.sock debug

debug会将状态信息生成到MySQL数据库的错误文件中保存,一般锁的信息都会保存在最后几行,通过tail命令查看

[root@mysql1 /]#tail -10 phpmysql02.err

 

猜你喜欢

转载自allenhu0320.iteye.com/blog/2186156