• ADADADADAD

    Performance Schema怎么用[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:15:27

    作者:文/会员上传

    简介:

    Performance Schema简介Oracle DBA都应该知道 Oracle中提供了大量的视图供DBA们排查问题使用,并且有等待事件帮助大家快速定位问题属于哪一类。MySQL 中也有Performance Sche

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    Performance Schema简介

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


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

    Performance Schema开启方式

      设置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_instruments和setup_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中的事件表有层级之分 ,我们可以通过上面看到有 global、thread、current、history、history_long,他们之间的层级如下:

      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

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

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


      这里的history、history_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,
        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;

        <ul class="list-paddingleft-2" font-size:16px;white-space:normal;background-color:#FFFFFF;box-sizing:border-box !important;">

          查看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怎么用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: performanceschema