zoukankan      html  css  js  c++  java
  • 类比的方法学习Performance_schema

    引用自:http://www.javacoder.cn/?p=332

    MySQL在5.6版本中包含了一个强大的特性——performance-schema,合理的使用这个数据库中的表,能为我们解决一些瓶颈问题提供帮助,但是在我使用的5.6.21版本中,已经包含了52张表,后续还有可能会持续增加,所以搞清楚各个表之间的关系很重要。
    1)setup_instruments
    使用performance-schema诊断问题的过程类似于医生给病人看病的过程。”setup_instruments”犹如医生能够使用的测量仪器(比如温度计,CT,X光等),在MySQL的官方文档中,使用“instrument”一词来表示,这应该也是这个表的名称的来源。这个表的每一行代表一个”instrument”,”instrument”在MySQL的源码中表示为一段为了测量相应指标的代码。这张表的三个字段分别为“name enabled timed”,enabled表示是否启用该”instrument”, “timed”表示是否对其进行定量的耗时分析。
    2)setup_objects
    setup_objects类似某类病人(精神病,男科,妇科等),在MySQL中指table, 表示哪些表需要“instrument”,该表的默认值为:
    +-------------+--------------------+-------------+---------+-------+
    | 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 |
    +-------------+--------------------+-------------+---------+-------+

    表示出了系统表“mysql performance_schema information_schema”外,都需要对其进行“instrument”操作。
    3)threads
    “threads“类似于某个病人,在MySQL中的某个线程,这个表有一个非常重要的字段”INSTRUMENTED“,表示是否需要对该线程进行”instrument“,这个字段由”setup_actors“表中的内容决定。setup_actors的默认内容如下
    +--------+--------+-------+
    | HOST   | USER   | ROLE  |
    +--------+--------+-------+
    | %      | %      | %     |
    +--------+--------+-------+

    线程分前台线程和后台线程,后台线程指MySQL为了完成任务二自己开启的线程,这样的线程的setup_objects.INSTRUMENTED字段默认为true。前台线程值用户操作而开启的线程。这时如果当前用户匹配setup_actors中的某个记录,那么setup_objects.INSTRUMENTED=true.
    threads表的另一个功能是可以代替”show processlist”指令和”information_schema.processlist”表的功能,其不用获取同步的mutex对象,不会又那么重的额外消耗(overhead).

    4)setup_consumers
    setup_consumers表类似于各种诊断报告是否需要记录的配置,这个表的默认配置为: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 |
    +--------------------------------+---------+

    这个表的各个记录还存在层级关系,只有当上级的配置启用时才会考虑下级的配置。
    层级关系为:
    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_instrumentation启用时,”thread_instrumentation”和”statements_digest”的配置才有可能生效。其他的配置类推。
    只有当”setup_instruments”,”setup_objects”,”setup_consumers“和”threads”都某一项测量指标都启用时才能收集到它的信息。

    结束语

    对于”statement, stages, waits“这三类统计信息,除了setup_consumers中配置的名称,还有summary版本的统计信息(summary_by_host_by_event_name, summary_by_user_event_name, summary_global_by_event_name)等按照各个维度的统计信息,外加file_instance, mutext_instance, rwlock_instance, table_io_waits_summary_by_index_usage, table_io_waits_summary_by_table,table_lock_waits_summary_by_table,外加一些杂项信息。
    由于这些都是基础信息,网上有一个叫做ps_helper的项目,它提供了一些视图,存储过程来简化performence_schema数据库的使用,MySQL官方的GUI工具——MySQL Workbench就含义ps_helper的安装向导入下图,

    mysql_workbench_ps_helper_setup

    安装完后会新增一个名为”sys”的数据库,里面会包含一些视图和存储过程,具体的内容可以查看官方文档。

    一些不错的资料:
    ps_helper官方 
    MySQL Performance_Schema官网
    Using-MySQL-5.6-Performance-Schema-To-Troubleshoot-Typical-Workload-Bottlenecks.pdf

    Posted in: MySQL practise

     
     
  • 相关阅读:
    MySQL根据父ID排序类别
    isNotBlank的用法
    IDEA中的.iml文件和.idea文件夹
    java组件:获取查询月份的第一天和最后一天,默认取当前月份
    MyBatis:条件构造器QueryWrapper方法详解
    querywrapper条件构造器
    mybatisplus主键策略选择
    mybatis-plus 高级搜索分页功能的实现 sql语句 QueryWrapper 条件判断
    QueryWrapper查询
    MySQL根据父ID排序类别(mysql sort category according to parent id)
  • 原文地址:https://www.cnblogs.com/JiangLe/p/4528964.html
Copyright © 2011-2022 走看看