可以使用performance_schema在运行时检查服务器的内部执行情况。
performance_schema中有许多影响服务器计时的事件消费者,例如函数调用、对操作系统的等待、
SQL语句执行中的某个阶段(例如解析或排序)、一条语句或一组语句。所有收集的信息都存储在
performance_schema中,不会被复制。
默认情况下,performance_schema是启用的;如果要禁用它,可以在my.cnf文件中设置
performance_schema = OFF。默认情况下,并非所有的消费者和计数器都处于启用状态;可以通过更
新performance_schema.setup_instruments和performance_schema.setup_consumers表来关闭/打
开它们。
如何操作
如何使用performance_schema呢?
启用/禁用performance_schema
要禁用performance_schema,可以修改配置文件
启用/禁用消费者和计数器
可以在setup_consumers表中看到可用的消费者列表,如下所示:
如果要启用events_waits_current:
[root@www ~]# vim /etc/my.cnf
[mysqld]
performance_schema = 0
mysql> select * from performance_schema.setup_consumers;
±---------------------------------±--------+
| NAME | ENABLED |
±---------------------------------±--------+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
| events_statements_current | YES |
| events_statements_history | YES |
| events_statements_history_long | NO |
| events_transactions_current | YES |
| events_transactions_history | YES |
| events_transactions_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 |
±---------------------------------±--------+
15 rows in set (0.00 sec)
同样,可以从setup_instruments表启用/禁用计数器,大约有1182种计数器(视MySQL版本而定):
performance_schema表
performance_schema中有5种主要的表类型。它们是当前事件表、事件历史表、事件摘要表、对象实
例表和设置(配置)表:
mysql> UPDATE performance_schema.setup_consumers SET ENABLED=‘YES’
-> WHERE NAME=‘events_waits_current’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments
LIMIT 10;
±--------------------------------------------------------±--------±------+
| NAME | ENABLED | TIMED |
±--------------------