概述

MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。performance_schema中事件统计表。统计事件表分为5个类别,分别为等待事件、阶段事件、语句事件、事务事件、内存事件。

1、performance_schema特点

它具有以下特点:

1)提供了一种在数据库运行时实时检查server的内部执行情况的方法。performance_schema 数据库中的表使用performance_schema存储引擎。该数据库主要关注数据库运行过程中的性能相关的数据,与information_schema不同,information_schema主要关注server运行过程中的元数据信息

2)performance_schema通过监视server的事件来实现监视server内部运行情况, “事件”就是server内部活动中所做的任何事情以及对应的时间消耗,利用这些信息来判断server中的相关资源消耗在了哪里?一般来说,事件可以是函数调用、操作系统的等待、SQL语句执行的阶段(如sql语句执行过程中的parsing 或 sorting阶段)或者整个SQL语句与SQL语句集合。事件的采集可以方便的提供server中的相关存储引擎对磁盘文件、表I/O、表锁等资源的同步调用信息。

3)performance_schema中的事件与写入二进制日志中的事件(描述数据修改的events)、事件计划调度程序(这是一种存储程序)的事件不同。performance_schema中的事件记录的是server执行某些活动对某些资源的消耗、耗时、这些活动执行的次数等情况。

4)performance_schema中的事件只记录在本地server的performance_schema中,其下的这些表中数据发生变化时不会被写入binlog中,也不会通过复制机制被复制到其他server中。

5)当前活跃事件、历史事件和事件摘要相关的表中记录的信息。能提供某个事件的执行次数、使用时长。进而可用于分析某个特定线程、特定对象(如mutex或file)相关联的活动。

6)PERFORMANCE_SCHEMA存储引擎使用server源代码中的“检测点”来实现事件数据的收集。对于performance_schema实现机制本身的代码没有相关的单独线程来检测,这与其他功能(如复制或事件计划程序)不同

7)收集的事件数据存储在performance_schema数据库的表中。这些表可以使用SELECT语句查询,也可以使用SQL语句更新performance_schema数据库中的表记录(如动态修改performance_schema的setup_*开头的几个配置表,但要注意:配置表的更改会立即生效,这会影响数据收集)

8)performance_schema的表中的数据不会持久化存储在磁盘中,而是保存在内存中,一旦服务器重启,这些数据会丢失(包括配置表在内的整个performance_schema下的所有数据)

9)MySQL支持的所有平台中事件监控功能都可用,但不同平台中用于统计事件时间开销的计时器类型可能会有所差异。

2、performance_schema实现机制

performance_schema遵循以下设计目标:

1)启用performance_schema不会导致server的行为发生变化。例如,它不会改变线程调度机制,不会导致查询执行计划(如EXPLAIN)发生变化

2)启用performance_schema之后,server会持续不间断地监测,开销很小。不会导致server不可用

3)在该实现机制中没有增加新的关键字或语句,解析器不会变化

4)即使performance_schema的监测机制在内部对某事件执行监测失败,也不会影响server正常运行

5)如果在开始收集事件数据时碰到有其他线程正在针对这些事件信息进行查询,那么查询会优先执行事件数据的收集,因为事件数据的收集是一个持续不断的过程,而检索(查询)这些事件数据仅仅只是在需要查看的时候才进行检索。也可能某些事件数据永远都不会去检索

6)需要很容易地添加新的instruments监测点

7)instruments(事件采集项)代码版本化:如果instruments的代码发生了变更,旧的instruments代码还可以继续工作。

注意:MySQL sys schema是一组对象(包括相关的视图、存储过程和函数),可以方便地访问performance_schema收集的数据。同时检索的数据可读性也更高(例如:performance_schema中的时间单位是皮秒,经过sys schema查询时会转换为可读的us,ms,s,min,hour,day等单位),sys schem在5.7.x版本默认安装

3、基本概念

instruments:生产者,用于采集MySQL 中各种各样的操作产生的事件信息,对应配置表中的配置项我们可以称为监控采集配置项,以下提及生产者均统称为instruments

consumers:消费者,对应的消费者表用于存储来自instruments采集的数据,对应配置表中的配置项我们可以称为消费存储配置项,以下提及消费者均统称为consumers

4、performance_schema表的分类

performance_schema库下的表可以按照监视不同的纬度进行分组,例如:或按照不同数据库对象进行分组,或按照不同的事件类型进行分组,或在按照事件类型分组之后,再进一步按照帐号、主机、程序、线程、用户等

5、performance_schema管理

5.1、打开performance_schema

performance_schema在5.7.x及其以上版本中默认启用(5.6.x及其以下版本默认关闭),如果要显式启用或关闭时,我们需要使用参数performance_schema=ON|OFF设置,并在my.cnf中进行配置:

[mysqld]performance_schema = ON # 注意:该参数为只读参数,需要在实例启动之前设置才生效

5.2、performance_schema配置instruments

数据库刚刚初始化并启动时,并非所有instruments(事件采集项,在采集项的配置表中每一项都有一个开关字段,或为YES,或为NO)和consumers(与采集项类似,也有一个对应的事件类型保存表配置项,为YES就表示对应的表保存性能数据。

5.2.1、setup_instruments表中顶级instruments 组件分类如下:

1)Idle 组件(1个)

2)transaction 组件(1个)

3)Memory 组件(377个),默认情况下禁用了大多数memory instruments

4)Stage Instrument 组件(129个)

5)Statement Instrument 组件(193个)

6)Wait Instrument 组件(319个),包含如下几个子类

wait/io:用于检测I/O操作的instrumentswait/io/table/sql/handler:与表I/O操作相关的instrumentswait/lock:锁操作相关的instruments wait/synch:磁盘同步对象相关的instruments

5.2.2、推荐配置

my.cnf参考如下配置:

#监控performance_schema=onperformance-schema-instrument='wait/io/file/%=on'performance-schema-instrument='wait/io/table/%=on'performance-schema-instrument='statement/com/%=on'performance-schema-instrument='statement/sql/%=on'performance-schema-instrument='stage/sql/%=on'performance-schema-instrument='memory/%=on'# 注:只有current=on,performance_schema才会检查是否需要填充到history和long history中,后两者没有关系,均依赖于current,因此current必须无条件启用performance-schema-consumer-events_stages_current=on# performance-schema-consumer-events_stages_history=on# performance_schema_events_stages_history_size=30performance-schema-consumer-events_stages_history_long=onperformance_schema_events_statements_history_long_size=10000performance-schema-consumer-events_statements_current=on# performance-schema-consumer-events_statements_history=on# performance_schema_events_statements_history_size=30performance-schema-consumer-events_statements_history_long=onperformance_schema_events_statements_history_long_size=10000performance-schema-consumer-events_waits_current=on# performance-schema-consumer-events_waits_history=on# performance_schema_events_statements_history_size=30performance-schema-consumer-events_waits_history_long=onperformance_schema_events_waits_history_long_size=10000performance-schema-consumer-statements_digest=on

后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下~

mysql 事件统计_mysql事件统计之PERFORMANCE_SCHEMA基础详解相关推荐

  1. mysql master 配置_MySQL双Master配置的方法详解

    刚刚抽空做了一下MYSQL 的主主同步.把步骤写下来,至于会出现的什么问题,以后随时更新.这里我同步的数据库是TEST1.环境描述.主机:192.168.0.231(A)主机:192.168.0.23 ...

  2. 给mysql 授权 命令_mysql中授权命令grant用法详解:

    mysql中授权命令grant用法详解: mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: gra ...

  3. mysql escape关键字_MySQL中ESCAPE关键字的用法详解

    MySQL转义 转义即表示转义字符原来的语义,一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. MySQL中,转义字符以"\" ...

  4. mysql事务并发控制_mysql事务和多版本并发控制详解

    一.mysql事务 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎可以成功执行该组全部语句,那么就执行该组语句.如果其中有任何一条语句不能执行,那么所有的语句都不会执行.也就 ...

  5. mysql密码高级_MySQL数据库高级操作(图文详解)

    数据表高级操作 准备工作:安装MySQL数据库 create database CLASS; use CLASS; create table TEST (id int not null,name ch ...

  6. mysql week 参数_MySQL week()函数及参数mode详解

    通常,一年的正常年份为365天,闰年为366天.一年又可以分为许多周,每周有7天. 所以一年,我们经常有365/7 = 52周,周范围是从1到52. 要查看给定日期属于哪个周数,您可以使用WEEK函数 ...

  7. mysql binlog 回退_MYSQL Binglog分析利器:binlog2sql使用详解

    大部分使用mysql的业务也都会开启binlog,用以记录数据库的更新操作.当然binlog的格式大家也都比较清楚,分别是statement.mixed.row模式.针对row格式的binlog,它以 ...

  8. jdbc mysql 换行符_mysql JDBC URL格式各个参数详解

    mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值 ...

  9. mysql linux文件_MySQL在Linux系统下配置文件详解

    在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...

最新文章

  1. 2018网站信息系统安全等级保护限期整改通知书的处理解决方案
  2. Python教程:多态与多态性
  3. [转]了解ASP.NET MVC几种ActionResult的本质:EmptyResult ContentResult
  4. java threadlocal 缺点_Java的ThreadLocal如何在后台实现?
  5. redis的info
  6. Atitit 机器视觉图像处理与机器学习概论2017版 attilax著
  7. android sid如何验证有效性,使用RMAN验证备份的有效性
  8. Docker从理论到实践(九)------使用Dockerfile创建镜像
  9. 语音验证码api 手机接听验证码
  10. mysql从入门到精通pdf百度云明日科技_PHP从入门到精通(第3版) 明日科技 中文完整pdf扫描版[42MB]_IT教程网...
  11. PD-L1免疫组化检测难点与要点
  12. MATLAB Appdesigner开发独立桌面App全流程(三):App的简单美化、打包、安装及卸载
  13. PMP工作绩效数据、信息和报告三者的区别
  14. 基于麻雀算法的无人机航迹规划 - 附代码
  15. 哪款蓝牙耳机戴着舒服?佩戴舒适度高的四款蓝牙耳机推荐
  16. mysql 灾备方案_mysql数据库灾备方案
  17. 第一篇博客------自我介绍
  18. 字符串短横线和驼峰形式的互相转换 Javascript
  19. 第8章 - 异构系统的协同控制及最优控制 --> 最优控制
  20. 黑马12月开班丨2021年倒计时,你还有机会改变!

热门文章

  1. 重温数学基础——矩阵求逆
  2. 新堂NUC505开发板第一炮-启动篇
  3. NSIS制作Qt自定义界面安装包(三):禁默安装运行软件所需的运行环境(Vc_redist, bonjoursdk)
  4. “ 这片绿茵从不缺乏天才,努力才是最终的入场券——梅西 ”
  5. 英特尔On技术创新峰会:携手开发者打造开放生态系统
  6. Visual Age for Java_VisualAge for Java使用技巧
  7. 兔子拔萝卜的java游戏_幼儿园中班体育游戏教案详案《小兔拔萝卜》
  8. 纯css3圆柱模板立体图
  9. OceanBase 2.2初体验
  10. Kubernetes v1.19版本来了,有哪些重磅更新?