尽管Performance
Schema(以下简称PS)在5.5中已经出现,但一直没有使用过,并且相比5.6,5.5的PS表要少很多。
以下从一个初学者的角度,阅读PS的官方文档,做一些简单的笔记
1.开启PS
首先需要强调一点,开启PS是有性能开销的,在一个性能测试场景上,我对比了阿里内部版本的Percona
Server
5.5.18与官方MySQL5.6.10,发现在同等压力下,5.6版本有明显的更高的CPU开销(大约高了10~20%)
确认是否开启:
编译阶段: -D WITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON
默认是ON,可以设为OFF来在编译阶段关闭Performance
Schema
也可以在启动mysqld时,关闭选项 performance_schema
如果你在error
log中看到类似错误的PS表结构或者PS表找不到之类的错误,在开启实例后,可以执行一下mysql_upgrade
[ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure [ERROR] Native table 'performance_schema'.'events_waits_history_long'
has the
wrong structure
2.配置PS
Performance
Schema可以通过配置setup表来在运行时配置PS,包括以下几个表:
mysql> 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)
事件的计数设置有两个相关的表:
performance_timers 列出了可用的时间计数器(timer)及其特征
mysql> SELECT * FROM
performance_timers;
+————-+—————–+——————+—————-+
| TIMER_NAME |
TIMER_FREQUENCY | TIMER_RESOLUTION | TIMER_OVERHEAD |
+————-+—————–+——————+—————-+
|
CYCLE | 2490706467
| 1
| 38 |
| NANOSECOND | 1000000000
| 1
| 128 |
| MICROSECOND<