performance_schema 初相识 & 配置详解 & 应用

千金良方:MySQL性能优化金字塔法则

第4章 performance_schema初相识
第5章 performance_schema配置详解
第6章 performance_schema应用示例荟萃

简介

1、实时监控Server性能监控和诊断的工具
2、它提供了丰富的性能指标和事件,可以帮助你深入了解 MySQL 的性能状况
3、通过 performance_schema,你可以监视数据库的查询、锁定、IO 等方面的性能数据,并进行性能优化和瓶颈排查
4、只记录本地,不会同步到备库
5、数据保存在内存,重启丢失

常见表介绍

表名 描述
accounts 存储MySQL帐户信息和密码哈希值的表
cond_instances 存储条件对象实例的表
events_waits_current 提供当前等待事件的信息
events_waits_history 提供历史等待事件的信息
events_waits_history_long 提供长期历史等待事件的信息
events_waits_summary_by_instance 提供按实例汇总的等待事件信息
events_waits_summary_by_thread 提供按线程汇总的等待事件信息
events_stages_current 提供当前阶段事件的信息
events_stages_history 提供历史阶段事件的信息
events_stages_history_long 提供长期历史阶段事件的信息
events_stages_summary_by_host_by_event_name 提供按主机和事件名称汇总的阶段事件信息
events_stages_summary_by_host_by_event_name 提供按主机和事件名称汇总的阶段事件信息
events_statements_current 提供当前语句事件的信息
events_statements_history 提供历史语句事件的信息
events_statements_history_long 提供长期历史语句事件的信息
events_statements_summary_by_account_by_event_name 提供按帐户和事件名称汇总的语句事件信息
events_statements_summary_by_host_by_event_name 提供按主机和事件名称汇总的语句事件信息
events_statements_summary_by_thread_by_event_name 提供按线程和事件名称汇总的语句事件信息
events_statements_summary_by_user_by_event_name 提供按用户和事件名称汇总的语句事件信息
events_transactions_current 提供当前事务事件的信息
events_transactions_history 提供历史事务事件的信息
events_transactions_history_long 提供长期历史事务事件的信息
events_transactions_summary_by_host_by_event_name 提供按主机和事件名称汇总的事务事件信息
events_transactions_summary_by_thread_by_event_name 提供按线程和事件名称汇总的事务事件信息
events_transactions_summary_by_user_by_event_name 提供按用户和事件名称汇总的事务事件信息
events_waits_summary_global_by_event_name 提供按事件名称全局汇总的等待事件信息
file_instances 存储文件实例的表
file_summary_by_event_name 提供按事件名称汇总的文件摘要信息
file_summary_by_instance 提供按实例汇总的文件摘要信息
hosts 存储已连接到MySQL服务器的主机信息
mutex_instances 存储互斥锁实例的表
performance_timers 存储性能计时器的信息
rwlock_instances 存储读写锁实例的表
session_connect_attrs

储会话连接属性的表 |
| setup_consumers | 存储事件消费者信息的表 |
| setup_instruments | 存储事件仪表信息的表 |
| setup_timers | 存储计时器信息的表 |
| threads | 存储线程信息的表 |
| users | 存储MySQL用户信息的表 |

以上是MySQL 8中performance_schema表的一些常见表和它们的作用。performance_schema表提供了关于MySQL服务器性能、资源利用和各种事件的详细信息。通过查询这些表,您可以获得关于MySQL服务器运行状态的有用统计信息,以便进行性能分析和调优。

配置详解

1、介绍编译时的配置选项,只对源码编译安装适用

2、详细介绍启动时配置,即在启动之前如何通过配置文件来持久化performance_schema的配置,主要介绍performance_schema的system variables(系统变量)、status variables(状态变量)和启动选项

show variables like '%performance_schema%';

performance_schema 初相识 & 配置详解 & 应用_第1张图片

3、详细介绍运行时配置,即在运行过程中如何动态配置performance_schema,主要介绍如何通过performance_schema中的配置表进行动态配置,以及这些配置表的字段含义、配置表中的配置项之间有什么关联等。

应用

利用等待事件排查MySQL性能问题

events_waits_current

使用 events_waits_current 视图可以查看当前正在等待的事件。这个视图提供了关于当前等待事件的详细信息,包括等待事件的类型、持续时间、等待线程的状态等。

以下是使用 events_waits_current 视图的一般步骤:

  1. 确保 performance_schema 已经启用:

    • 在 MySQL 的配置文件中,检查 performance_schema 是否被设置为 ON。如果没有设置,需要修改配置文件并重启 MySQL。
  2. 查询 events_waits_current 视图:

    • 使用 SELECT 语句查询 events_waits_current 视图,可以获取当前正在等待的事件信息。
    • 例如,可以执行以下查询来获取当前等待事件的信息:
      SELECT * FROM performance_schema.events_waits_current;
      
  3. 分析等待事件:

    • 分析查询结果,查看不同等待事件的类型和持续时间。
    • 根据事件类型和持续时间,判断是否存在性能瓶颈,并确定需要采取的优化措施。
  4. 结合其他视图和表进行进一步分析:

    • 可以结合其他的 performance_schema 视图和表,如 events_statements_summary_by_digestevents_statements_current 等,来获取更全面的性能数据和查询执行信息。

请注意,events_waits_current 视图只提供了当前正在等待的事件信息,如果需要查看历史等待事件,可以使用 events_waits_history 视图。

使用 events_waits_current 视图可以实时监控当前等待事件,对于实时性能问题的排查和分析很有帮助。结合其他性能监控工具和技术,可以更全面地了解 MySQL 的性能状况,并进行相应的优化和调整。

events_waits_summary_global_by_event_nameevents_waits_history_long

使用 performance_schema 可以利用等待事件来排查 MySQL 的性能问题。等待事件是指在执行过程中,MySQL 进程因等待某种资源而暂时挂起的情况。通过分析等待事件,可以找出导致性能瓶颈的原因,并进行相应的优化。

下面是使用 performance_schema 排查 MySQL 性能问题的一般步骤:

  1. 确保 performance_schema 已经启用:

    • 在 MySQL 的配置文件中,检查 performance_schema 是否被设置为 ON。如果没有设置,需要修改配置文件并重启 MySQL。
  2. 查询等待事件:

    • 使用 performance_schema 提供的视图和表来查询等待事件。常用的视图包括 events_waits_summary_global_by_event_nameevents_waits_history_long
    • 例如,可以执行以下查询来获取全局等待事件的摘要信息:
      SELECT * FROM performance_schema.events_waits_summary_global_by_event_name;
      
  3. 分析等待事件:

    • 分析查询结果,查看哪些等待事件的计数较高,表示这些事件可能是性能瓶颈的原因。
    • 根据不同的等待事件,采取相应的优化措施。例如,如果发现等待事件是与磁盘IO相关的,可能需要优化磁盘性能或优化查询的索引。
  4. 进一步细化分析:

    • 使用 performance_schema 提供的更详细的视图和表,进一步细化分析性能问题。例如,events_statements_summary_by_digest 表提供了查询摘要的性能数据,可以根据查询的执行时间、扫描行数等指标进行优化。
  5. 监控和持续优化:

    • 定期监控 performance_schema 的数据,并与系统负载和性能指标进行对比。根据数据的变化,进一步优化数据库的配置和查询语句,以达到更好的性能。

使用 performance_schema 来排查性能问题需要对 MySQL 的内部工作原理和各个等待事件有一定的了解。可以参考 MySQL 官方文档中关于 performance_schema 的详细说明,以及一些性能优化的经验和案例来指导实际操作。

锁问题排查

1、全局读锁
2、MDL锁
3、表级锁
4、行级锁

从MySQL 5.7版本开始提供了performance_schema.metadata_locks表,该表记录了各种Server层的锁信息(包括全局读锁和MDL锁等信息)

information_schema下的三个关于InnoDB引擎的锁和事务信息表(INNODB_LOCK_WAITS、INNODB_LOCKS、INNODB_TRX)

performance_schema.table_handles表

performance_schema.events_statements_current表

sys.innodb_lock_waits视图

查看最近的SQL语句执行信息

查看SQL语句执行阶段和进度信息

查看最近的事务执行信息

查看多线程复制报错详情

你可能感兴趣的:(MySQL,数据库,mysql,服务器)