Performance Schema简介

Oracle DBA都应该知道 Oracle中提供了大量的视图供DBA们排查问题使用,并且有等待事件帮助大家快速定位问题属于哪一类。MySQL 中也有Performance Schema帮助大家去分析排查问题,并且在5.7中增加了Sys Schema,将Performance Schema和information_schema的信息格式化后,供大家更方便的分析问题。

这里先介绍先Performance Schema的使用方式,便于后面大家更好的去使用Sys Schema。

Performance Schema开启方式

  • 开启Performance Schema库

    在配置文件中添加performance_schema=on

  • 设置instruments及consumers开启

开启performance_schema=on之后我们还需要进行设置instruments及consumers

instruments通俗讲就是监控项可以通过setup_instruments表设置需要开启对哪些项监控进行统计

consumers就是控制是否将监控到的结果进行记录:

UPDATE setup_instruments SET ENABLED = 'YES', TIMED = 'YES';
UPDATE setup_consumers SET ENABLED = 'YES';

如果不开启instruments和consumers则相应的事件检测则不能使用,也就不能收集相应的等待事件和性能的统计。

当然我们也可以单独设置某一个instruments的开启和关闭:

UPDATE setup_instruments SET ENABLED = 'NO'
WHERE NAME = 'wait/io/file/sql/binlog';

为了防止重启后恢复默认配置可以添加到配置文件中设置:

performance-schema-instrument='instrument_name=value'
performance-schema-consumer-consumer_name=value
instrument_name和consumer_name
可以通过查询setup_instrumentssetup_consumers;查看

setup_consumers中的层级关系:

mysql> select * from setup_consumers;
+--------------------------------+---------+
| NAME                           | ENABLED |
+--------------------------------+---------+
| events_stages_current          | YES     |
| events_stages_history          | YES     |
| events_stages_history_long     | YES     |
| events_statements_current      | YES     |
| events_statements_history      | YES     |
| events_statements_history_long | YES     |
| events_waits_current           | YES     |
| events_waits_history           | YES     |
| events_waits_history_long      | YES     |
| global_instrumentation         | YES     |
| thread_instrumentation         | YES     |
| statements_digest              | YES     |
+--------------------------------+---------+
12 rows in set (0.00 sec)

setup_consumers中的事件表有层级之分 ,我们可以通过上面看到有globalthreadcurrenthistoryhistory_long,他们之间的层级如下:

global_instrumentation
thread_instrumentationevents_waits_currentevents_waits_historyevents_waits_history_longevents_stages_currentevents_stages_historyevents_stages_history_longevents_statements_currentevents_statements_historyevents_statements_history_long
statements_digest

也就是说,如果设置了global的才会去检查thread的有没有被设置,如果thread的设置了才会去检查current的有没有被设置,如果global的没有被设置则thread和current都不去检查,相应的信息也不会记录到对应的表中。

如果global_instrumentation没有被设置则对应的表中都不会记录任何信息。

这里的historyhistory_long可以通过参数设置大小,因为是内存表,如果太大会占用很多内存。

setup_instruments中的类型

mysql> select name,count(*) from setup_instruments group by left(name,5);
+---------------------------------+----------+
| name                            | count(*) |
+---------------------------------+----------+
| idle                            |        1 |
| stage/sql/After create          |      108 |
| statement/sql/select            |      168 |
| wait/synch/mutex/sql/PAGE::lock |      279 |
+---------------------------------+----------+
4 rows in set (0.00 sec)

我们可以看到setup_instruments中的类型有四种(5.6版本)。

具体的解释大家可以在官网中查看:
https://dev.mysql.com/doc/refman/5.6/en/performance-schema-instrument-naming.html

简单使用介绍

简单介绍几个语句用于排查SQL语句的效率:

  • 查询没有使用到索引或者索引效率低下的语句
SELECT OBJECT_SCHEMA,  THREAD_ID TID, SUBSTR(SQL_TEXT, 1, 50) SQL_TEXT, ROWS_SENT RS, ROWS_EXAMINED RE,CREATED_TMP_TABLES,NO_INDEX_USED,NO_GOOD_INDEX_USED FROM performance_schema.events_statements_history WHERE (NO_INDEX_USED=1 OR NO_GOOD_INDEX_USED=1) and sql_text  NOT LIKE '%performance_schema%'\G
  • 查看哪些索引没有被使用过
SELECT
OBJECT_SCHEMA,
OBJECT_NAME,
INDEX_NAME
FROM table_io_waits_summary_by_index_usage
WHERE INDEX_NAME IS NOT NULL
AND COUNT_STAR = 0
AND OBJECT_SCHEMA <> 'mysql'
ORDER BY OBJECT_SCHEMA,OBJECT_NAME;
  • 查看SQL语句在哪个阶段消耗最大
SELECT eshl.event_name, sql_text, eshl.timer_wait/1000000000000 w_s
FROM performance_schema.events_stages_history_long eshl
JOIN performance_schema.events_statements_history_long esthl
ON (eshl.nesting_event_id = esthl.event_id)
WHERE eshl.timer_wait > 1*10000000000\G

总结

此次简单介绍了Performance Schema的使用,后面会逐步介绍使用Performance Schema的一些实战功能。

来源:沃趣科技(woqutech)
作者:董红禹

Performance Schema使用简介(一)相关推荐

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

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

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

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

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

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

  4. MYSQL performance schema详解

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

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

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

  6. MySQL5.7新增Performance Schema表

    在前面有几篇博客我们已经介绍过MySQL5.6的Performance Schema,详细可点击博客1,博客2,博客3.在MySQL5.6里这些PS表已经包含了足够丰富的信息,帮助我们来分析MySQL ...

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

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

  8. Performance Schema

    Performance Schema 在高负载下调优数据库性能是一个迭代循环的过程.每次进行更改以调优数据库的性能,都需要了解此次更改是否产生了预期的影响?那我们就需要具体的数据来支撑我们这次更改的依 ...

  9. Schema的简介和用法

    一.什么是Schema.     1.XML  Schema是以XML语言为基础的,它用于可替代DTD. 2.一份XML  Schema文件描述了XML文档的结构. 2.1 定义了可以出现在文档里的元 ...

最新文章

  1. 合并单元格两行_28 HTML5标签学习——table单元格的合并
  2. JAVA微信APP支付接口整合
  3. ASP.NET用户登录模块代码
  4. K-近邻分类算法KNN
  5. RabbitMQ—为什么使用信道channel
  6. hexo评论_Hexo系列 | Hexo的基本使用
  7. (Z)使用SignalTAP II为了避免某些节点被弄丢, 必须要关闭的编译选项
  8. Precision-Recall Curve
  9. YoloV5实战:手把手教物体检测
  10. JPA + Hibernate + PostgreSQL + Maven基本配置示例
  11. DOM解析和SAX解析对比
  12. geemap_01_安装geemap
  13. linux下启动jboss脚本,Linux下配置JBoss自动启动
  14. JS打印菱形、简易计算器
  15. 关于RuntimeError: Cannot re-initialize CUDA in forked subprocess和CUDA error: initialization error的解决
  16. JAVA 实现《超级玛丽升级版》游戏
  17. 将ttc改为otf_Font Renamer字体更名、重命名工具_支持ttf、ttc、otf、pfb字体 V3.0 下载...
  18. calcite解读专栏前言
  19. AGS01DA VOC传感器 MSP430 单片机 程序 AGS01DB
  20. 真牛!一个Android应届生从上海离职,挥泪整理面经

热门文章

  1. 爱库存升级梦饷集团,如何诠释从去库存到“水电煤”新基建思维?
  2. 会员积分营销系统操作的时候怎样提升消费者的积极性?
  3. 如何成为一名企业真正需要的WebGIS开发工程师
  4. 为什么你的服务器总是被入侵?应该怎么防范提高服务器安全性。
  5. 企业积分兑换平台搭建流程
  6. linux无效的文件句柄,Linux文件句柄限制分析
  7. Python 1-05 数字
  8. HTML简单的登录+背景页面
  9. 秋季开学,培训机构如何做好线下招生?
  10. 不眠的硅谷——Just For Fun