performance-schema最早在MYSQL 5.5中出现,而现在5.6,5.7中performance-Schema又添加了更多的监控项,统计信息也更丰富,越来越有ORACLE-AWR统计信息的赶脚,真乃DBA童鞋进行性能诊断分析的福音。本文主要讲Performance-Schema中的配置表,通过配置表能大概了解performance-schema的全貌,为后续使用和深入理解做准备。

配置表

Performance-Schema中主要有5个配置表,具体如下:

root@performance_schema 06:03:09>show tables like '%setup%';

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

| Tables_in_performance_schema (%setup%) |

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

| setup_actors |

| setup_consumers |

| setup_instruments |

| setup_objects |

| setup_timers |

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

1.setup_actors用于配置user维度的监控,默认情况下监控所有用户线程。

root@performance_schema 05:47:27>select * from setup_actors;

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

| HOST | USER | ROLE |

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

| % | % | % |

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

2.setup_consumers表用于配置事件的消费者类型,即收集的事件最终会写入到哪些统计表中。

root@performance_schema 05:48:16>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个consumer,如果不想关注某些consumer,可以将ENABLED设置为NO,比如events_statements_history_long设置为NO,

则收集事件不会写入到对应的表events_statements_history_long中。12个consumer不是平级的,存在多级层次关系。具体如下表:

global_instrumentation

|– thread_instrumentation

|– events_waits_current

|– events_waits_history

|– events_waits_history_long

|– events_stages_current

|– events_stages_history

|– events_stages_history_long

|– events_statements_current

|– events_statements_history

|– events_statements_history_long

|– statements_digest

多层次的consumer遵从一个基本原则,只有上一层次的为YES,才会继续检查该本层为YES or NO。global_instrumentation是最高级别consumer,如果它设置为NO,则所有的consumer都会忽略。如果只打开global_instrumentation,而关闭所有其它子consumer(设置为NO),则只收集全局维度的统计信息,比如xxx_instance表,而不会收集用户维度,语句维度的信息。第二层次的是thread_instrumentation,用户线程维度的统计信息,比如xxx_by_thread表,另外一个是statements_digest,这个用于全局统计SQL-digest的信息。第三层次是语句维度,包括events_waits_current,events_stages_current和events_statements_current,分别用于统计wait,stages和statement信息,第四层次是历史表信息,主要包括xxx_history和xxx_history_long。

3.setup_instruments表用于配置一条条具体的instrument,主要包含4大类:idle,stage/xxx,statement/xxx,wait/xxx.

root@performance_schema 06:25:50>select name,count(*) from setup_instruments group by LEFT(name,5);

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

| name | count(*) |

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

| idle | 1 |

| stage/sql/After create | 111 |

| statement/sql/select | 170 |

| wait/synch/mutex/sql/PAGE::lock | 296 |

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

idle表示socket空闲的时间,stage类表示语句的每个执行阶段的统计,statement类统计语句维度的信息,wait类统计各种等待事件,比如IO,mutux,spin_lock,condition等。从上表统计结果来看,可以基本看到每类的instrument数目,stage包含111个,statement包含170个,wait包含296个。

4.setup_objects表用于配置监控对象,默认情况下所有mysql,performance_schema和information_schema中的表都不监控。而其它DB的所有表都监控。

root@performance_schema 06:25:55>select * from setup_objects;

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

| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED |

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

| TABLE | mysql | % | NO | NO |

| TABLE | performance_schema | % | NO | NO |

| TABLE | information_schema | % | NO | NO |

| TABLE | % | % | YES | YES |

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

5.setup_timers表用于配置每种类型指令的统计时间单位。MICROSECOND表示统计单位是微妙,CYCLE表示统计单位是时钟周期,时间度量与CPU的主频有关,NANOSECOND表示统计单位是纳秒,关于每种类型的具体含义,可以参考performance_timer这个表。由于wait类包含的都是等待事件,单个SQL调用次数比较多,因此选择代价最小的度量单位cycle。但无论采用哪种度量单位,最终统计表中统计的时间都会装换到皮秒。

root@performance_schema 06:29:50>select * from setup_timers;

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

| NAME | TIMER_NAME |

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

| idle | MICROSECOND |

| wait | CYCLE |

| stage | NANOSECOND |

| statement | NANOSECOND |

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

配置方式

默认情况下,setup_instruments表只打开了statement和wait/io部分的指令,setup_consumer表中很多consumer也没有打开。为了打开需要的选项,可以通过update语句直接修改配置表,并且修改后可以立即生效,但这种方式必需得启动服务器后才可以修改,并且无法持久化,重启后,又得重新设置一遍。从5.6.4开始提供了my.cnf的配置方式,格式如下:

1.设置采集的instrument

performance_schema_instrument='instrument_name=value'

(1)打开wait类型的指令

performance_schema_instrument='wait/%'

(2)打开所有指令

performance_schema_instrument='%=on'

2.设置consumer

performance_schema_consumer_xxx=value

(1)打开 events_waits_history consumer

performance_schema_consumer_events_waits_current=on

performance_schema_consumer_events_waits_history=on

这里要注意consumer的层次关系, events_waits_history处于第4层,因此设置它时,要确保events_statements_current,thread_instrumentation和global_instrumentation的ENABLED状态都为YES,才能生效。由于默认thread_instrumentation和global_instrumentation都是YES,因此只需要显示设置events_waits_current和events_waits_current即可。

3.设置统计表大小

所有的performance_schema表均采用PERFORMANCE_SCHEMA存储引擎,表中的所有数据只存在内存,表的大小在系统初始化时已经

固定好,因此占用的内存是一定的。可以通过配置来定制具体每个表的记录数。

performance_schema_events_waits_history_size=20

performance_schema_events_waits_history_long_size=15000

设置mysql的schema_MySQL Performance-Schema(一) 配置篇相关推荐

  1. [MySQL 5.6] Performance Schema 之 PS配置项(1)

    尽管Performance Schema(以下简称PS)在5.5中已经出现,但一直没有使用过,并且相比5.6,5.5的PS表要少很多. 以下从一个初学者的角度,阅读PS的官方文档,做一些简单的笔记 官 ...

  2. mysql 查询schema_mysql数据库schema是什么

    展开全部 schema在数据库中表62616964757a686964616fe59b9ee7ad9431333433646531示的是数据库对象集合,它包含了各种对像,比如:表,视图,存储过程,索引 ...

  3. mysql开启perform sch_MySQL Performance schema设置的一些建议选项

    MySQL 的Performance Schema由来已久,但由于内存消耗,性能影响等原因,导致其始终无法进入主流的MySQL默认配置,对MySQL的问题诊断以及处理造成很多不利的影响. 一般而言,P ...

  4. MySQL性能调优必知:Performance Schema引擎的配置与使用

    当你在MySQL高并发情况下的进行性能调优时,需要知道调整后的影响.例如查询是否变快了?锁是否会减慢运行速度?内存使用情况如何?磁盘IO等待时间变了吗? . Performance Schema就有一 ...

  5. MYSQL performance schema详解

    MYSQL performance schema详解 0.performance_schema的介绍 ​ MySQL的performance schema 用于监控MySQL server在一个较低级 ...

  6. mysql 当前schema_mysql schema详解

    mysql schema详解 1.1. MySQL 访问权限系统详解 1.1.3. MySQL 帐号访问控制两阶段 1.2. MySQL 访问权限系统表定义详解 MySQL 访问权限系统表包含如下几张 ...

  7. MySQL主从(MySQL proxy Lua读写分离设置,一主多从同步配置,分库分表方案)

    Mysql Proxy Lua读写分离设置 一.读写分离说明 读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELE ...

  8. MySQL深潜|剖析Performance Schema内存管理

    简介: 本文主要是通过对PFS引擎的内存管理源码的阅读,解读PFS内存分配及释放原理,深入剖析其中存在的一些问题,以及一些改进思路. 一  引言 MySQL Performance schema(PF ...

  9. MYSQL深潜 - 剖析Performance Schema内存管理

    简介: 本文主要是通过对PFS引擎的内存管理的源码的阅读,解读PFS内存分配及释放原理,深入剖析其中存在的一些问题,以及一些改进思路.本文源代码分析基于Mysql-8.0.24版本. 作者 | 之枢 ...

  10. 怎么配置mysql的ip_设置MYSQL允许用IP访问

    设置MYSQL允许用IP访问 2012-01-10 14:43 55人阅读 评论(0) 收藏 举报 SQL Error (1130): Host '192.168.1.100' is not allo ...

最新文章

  1. 开源库libuuid简介及使用
  2. 【C语言笔记初级篇】第五章:操作符
  3. LeetCode 606. Construct String from Binary Tree
  4. UESTC 1706 Orbital
  5. 微信支付,判断是否安装了微信
  6. matlab repmat 函数的使用
  7. ERP系统容灾方案对ERP生产系统的影响
  8. 应急响应的整体思路一
  9. 《区块链技术指南》笔记
  10. java 并发包脑图
  11. 基于Vision Transformer的视频哈希检索识别虚假视频
  12. DSPF28335学习笔记之(1)CMD文件说明
  13. 正则表达式在一个字符串上多次搜索、正则表达式匹配书名等
  14. 【Unity3D Shader编程】之九 深入理解Unity5中的Standard Shader (一)屏幕水幕特效的实现
  15. 七月的风,八月的雨,卑微的我喜欢遥远的你。
  16. 英雄联盟手游注册及下载教程(ios及安卓android最新最全版)
  17. 虚幻4脱坑指南——官网C++编程教程中第一人称设计游戏教程的若干问题及解决方法
  18. 海外媒体发稿:国外最受欢迎的主流新闻媒体网站有哪些?
  19. 医疗人工智能适逢其时 信息通信网络赋能千行百业
  20. 如何快速制作PCB线路板?

热门文章

  1. linux中如何记录时间
  2. MySQL查询用户行为,网站用户行为分析
  3. 对路径的访问被拒绝怎么办_工作组计算机无法访问,教您无法访问工作组计算机的解决技巧...
  4. winform等待窗口之最简单使用线程实现loading
  5. PHP中preg_match_all正则匹配出需要的内容
  6. 全网找不到jpeg2000的代码范例和图片,怎么可能流行开来?
  7. chrome安装测试打包插件
  8. 海南可以禁燃油辆,东北不可以,因为冬天温度
  9. 在电子表格计算架构上应用稀疏数组技术的设计
  10. 谈谈以前那位研发总监错在哪里