签到成功

知道了

CNDBA社区CNDBA社区

MySQL 5.7 中 performance_schema 数据库 说明

2024-07-04 18:01 990 0 转载 MySQL
作者: dave

注:本文由大模型生成

1. performance_schema 数据库说明

在MySQL 5.7中,performance_schema是一个内置的系统数据库,主要用于收集和存储与数据库性能相关的统计信息和指标。这个数据库从MySQL 5.5版本开始引入,并在MySQL 5.7中默认启用(但可以在MySQL配置参数中关闭以节约性能消耗)。以下是关于performance_schema数据库的详细说明:

一、主要功能

  • 性能监控performance_schema提供了丰富的表和视图,用于收集和分析MySQL服务器的性能数据,如CPU使用率、内存使用率、I/O操作、查询执行时间等。
  • 内部运行状态监控:通过监控MySQL的内部运行状态,如函数调用、操作系统等待、SQL语句执行阶段等,帮助运维人员了解数据库的运行情况。
  • 性能调优和故障排查:基于收集的性能数据,运维人员可以进行性能调优和故障排查,提高数据库的运行效率和稳定性。

二、数据库结构

  • 存储引擎performance_schema数据库使用PERFORMANCE_SCHEMA存储引擎管理,这是MySQL特有的一个存储引擎,专门用于性能数据的收集。
  • 表类型performance_schema中的表主要是内存表,不使用磁盘存储。在MySQL服务重启时,这些表的数据会被清空。
  • 数据收集performance_schema通过修改MySQL服务器源代码中的“检测点”来实现事件数据的收集,这些数据被存储在performance_schema数据库的表中。

三、常用表和功能

  • 配置表:如setup_actorssetup_consumerssetup_instruments等,用于配置performance_schema的监控范围和数据输出方式。
  • 事件表:记录了MySQL服务器执行的各种事件的信息,如events_stages_currentevents_stages_history等,用于分析SQL语句执行的各个阶段和性能瓶颈。
  • 内存使用表:如memory_summary_by_thread_by_event_name等,用于监视MySQL服务器中内存的使用情况。

四、使用注意事项

  • 性能影响:开启performance_schema可能会对MySQL服务器的性能产生一定的影响,因此在生产环境中使用时需要谨慎。
  • 配置调整:在使用performance_schema时,可能需要根据实际需求调整配置,如启用或禁用某些监控项、调整数据输出方式等。
  • 权限要求:查询performance_schema中的表需要相应的权限,否则可能会报错。

五、如何启用和验证

  • 启用:在MySQL 5.7中,performance_schema默认启用。如果需要手动启用或关闭,可以在MySQL配置文件(如my.cnfmy.ini)中设置performance_schema=ONperformance_schema=OFF
  • 验证:可以通过执行SHOW VARIABLES LIKE 'performance_schema';查询来验证performance_schema是否已启用。

综上所述,performance_schema是MySQL 5.7中一个强大的性能监控工具,通过收集和分析MySQL服务器的性能数据,帮助运维人员进行性能调优和故障排查。然而,在使用时需要注意其对性能的影响,并根据实际需求进行配置调整。

2. performance_schema 中的视图说明

MySQL 5.7 中共有 88 个视图,说明如下:

  • accounts

    • 功能描述:提供MySQL服务器上的账户信息,包括用户名、主机名等。
    • 使用场景:用于审计和监控哪些用户账户正在访问MySQL服务器,以及这些账户的活动情况。
  • cond_instanceshttp://www.cndba.cn/dave/article/131566

    • 功能描述:显示条件变量的实例信息,条件变量是MySQL内部用于线程间同步的机制。
    • 使用场景:主要用于开发者或高级DBA调试MySQL的内部线程同步问题,了解条件变量的使用情况和等待情况。
  • events_stages_current

    http://www.cndba.cn/dave/article/131566

    • 功能描述:显示当前正在执行的SQL语句的各个执行阶段(如解析、优化、执行等)。
    • 使用场景:实时监控SQL语句的执行阶段,帮助诊断当前正在进行的操作是否遇到性能瓶颈。
  • events_stages_history / events_stages_history_long

    • 功能描述:记录过去一段时间内SQL语句执行阶段的历史信息,history_long保留的时间更长。
    • 使用场景:用于分析过去一段时间内的SQL执行阶段,找出频繁出现的性能瓶颈或异常。
  • events_stages_summary_by_account_by_event_name

    • 功能描述:按账户和事件名称汇总SQL执行阶段的信息。
    • 使用场景:分析不同账户下SQL语句各阶段的执行性能,识别特定账户的潜在性能问题。
  • events_stages_summary_by_host_by_event_namehttp://www.cndba.cn/dave/article/131566

    • 功能描述:按主机和事件名称汇总SQL执行阶段的信息。
    • 使用场景:了解来自不同主机的SQL执行阶段性能,评估网络或远程连接对性能的影响。
  • events_stages_summary_by_thread_by_event_name

    • 功能描述:按线程和事件名称汇总SQL执行阶段的信息。
    • 使用场景:分析特定线程下SQL语句的执行阶段,识别线程级别的性能瓶颈。
  • events_stages_summary_by_user_by_event_name

    • 功能描述:按用户和事件名称汇总SQL执行阶段的信息。
    • 使用场景:评估不同用户执行SQL语句的性能,帮助识别用户级别的性能问题。
  • events_stages_summary_global_by_event_name

    • 功能描述:按事件名称全局汇总SQL执行阶段的信息。
    • 使用场景:了解整个MySQL服务器在SQL执行阶段上的总体性能表现。
  • events_statements_current / events_statements_history / events_statements_history_long

    • 功能描述:显示当前正在执行、过去一段时间内执行过的SQL语句及其相关信息,history_long保留的时间更长。
    • 使用场景:实时监控或分析历史SQL语句,找出性能瓶颈或优化点。
  • eventsstatements_summary_by 系列

    • 功能描述:这些视图按不同维度(如账户、摘要、主机、程序、线程、用户、全局)汇总SQL语句的执行信息。
    • 使用场景:用于详细分析SQL语句在不同维度下的执行性能,帮助进行SQL优化或查询调优。
  • events_transactions_current / events_transactions_history / events_transactions_history_long

    • 功能描述:显示当前正在执行、过去一段时间内执行过的事务及其相关信息,history_long保留的时间更长。
    • 使用场景:实时监控或分析事务的执行情况,帮助优化事务处理性能。
  • eventstransactions_summary_by 系列

    • 功能描述:这些视图按不同维度(如账户、主机、线程、用户、全局)汇总事务的执行信息。
    • 使用场景:分析不同维度下事务的执行性能,帮助识别事务处理中的瓶颈,优化事务处理流程。
  • events_waits_current

    • 功能描述:显示当前正在等待的所有事件的快照。
    • 使用场景:用于诊断当前正在发生的性能瓶颈,比如查看哪些查询或线程正在等待IO操作、锁等。
  • events_waits_history

    • 功能描述:存储最近发生的等待事件的滚动历史记录。
    • 使用场景:分析过去的等待事件,识别模式或周期性的性能问题。
  • events_waits_history_longhttp://www.cndba.cn/dave/article/131566

    • 功能描述:类似于events_waits_history,但存储更长时间的历史记录。
    • 使用场景:对于需要长期跟踪和分析的性能问题,此视图提供了更全面的历史数据。
  • events_waits_summary_by_account_by_event_name

    • 功能描述:按用户和事件名称汇总等待事件。
    • 使用场景:分析不同用户账户的性能影响,识别特定用户是否因某种类型的等待事件而遭受性能下降。
  • events_waits_summary_by_host_by_event_name

    • 功能描述:按主机和事件名称汇总等待事件。
    • 使用场景:识别来自特定主机的查询或连接是否因等待事件而变慢。
  • events_waits_summary_by_instance

    • 功能描述:按等待事件实例汇总等待数据。
    • 使用场景:深入了解特定等待事件实例的性能特征。
  • events_waits_summary_by_thread_by_event_name

    • 功能描述:按线程和事件名称汇总等待事件。
    • 使用场景:分析特定线程的性能问题,确定哪些线程因等待事件而受阻。
  • events_waits_summary_by_user_by_event_name

    • 功能描述:按用户和事件名称汇总等待事件。
    • 使用场景:分析用户级别的性能影响,识别是否有特定用户因某种类型的等待事件而遇到性能问题。
  • events_waits_summary_global_by_event_name

    • 功能描述:全局汇总所有等待事件。
    • 使用场景:提供服务器整体的等待事件概览,识别全局性能瓶颈。
  • file_instances

    • 功能描述:显示打开文件的实例信息。
    • 使用场景:监控和分析文件IO操作,如日志文件、数据文件等的访问情况。
  • file_summary_by_event_namefile_summary_by_instance

    • 功能描述:分别按事件名称和实例汇总文件IO操作。
    • 使用场景:分析不同文件IO操作的性能影响,识别热点文件或频繁访问的文件。
  • global_statusglobal_variables

    • 功能描述:分别显示全局状态变量和全局系统变量。
    • 使用场景:监控和分析服务器的整体状态和配置,调整和优化性能。
  • host_cachehosts

    • 功能描述host_cache 显示主机名缓存的详细信息,hosts 显示已知主机的列表。
    • 使用场景:分析主机名解析的性能和安全性,优化网络连接。
  • memorysummary 系列视图:

    • 功能描述:按不同维度(如账户、主机、线程、用户)汇总内存使用情况。
    • 使用场景:监控和分析内存使用情况,识别内存泄漏或过度使用的模式。
  • metadata_locks

    • 功能描述:显示元数据锁的信息。
    • 使用场景:分析DDL操作(如ALTER TABLE)对性能的影响。
  • mutex_instances

    http://www.cndba.cn/dave/article/131566

    • 功能描述:显示互斥锁实例的信息。
    • 使用场景:监控和分析内部锁的竞争情况,识别可能的锁争用问题。
  • objects_summary_global_by_type

    • 功能描述:按对象类型汇总性能数据。
    • 使用场景:了解不同对象类型(如表、索引)的性能特征。
  • performance_timers

    • 功能描述:提供有关系统性能计时器的信息。
    • 使用场景:分析系统层面的性能数据
  • prepared_statements_instances

    • 功能描述:此视图显示了当前所有预编译语句(prepared statements)的实例信息。它包括了预编译语句的ID、SQL文本、状态(如是否打开、是否已准备好等)以及与之相关的其他元数据。
    • 使用场景:用于监控预编译语句的使用情况,了解哪些预编译语句正在被使用,以及它们的状态。这有助于优化查询性能,因为预编译语句可以减少查询解析和优化的开销。此外,它还可以帮助识别可能的资源泄漏,如长时间未关闭的预编译语句。
  • processlist

    • 功能描述:此视图类似于SHOW PROCESSLIST命令的输出,提供了当前MySQL服务器上所有活动的线程(包括客户端连接和后台线程)的信息。它包括了线程的ID、用户、主机、数据库、命令类型、执行时间、状态以及查询文本(如果有的话)。
    • 使用场景:用于监控和诊断当前MySQL服务器的活动状态。通过分析processlist,可以识别出哪些查询正在执行、哪些连接处于空闲状态、哪些查询可能造成了性能瓶颈等。这对于调试性能问题、优化查询性能以及管理用户连接都非常重要。
  • replication_applier_configuration

    • 功能描述:此视图提供了有关复制应用者(replication applier)配置的信息,包括复制通道(channel)的名称、复制格式(如基于语句的复制、基于行的复制或混合复制)、复制过滤规则(如忽略某些数据库或表的复制)等。
    • 使用场景:用于监控和调试MySQL复制配置。通过此视图,可以验证复制配置是否正确设置,包括复制通道、复制格式和过滤规则等。这对于确保数据一致性和高可用性至关重要。
  • replication_applier_status

    • 功能描述:此视图提供了复制应用者(replication applier)的当前状态信息,包括复制通道的名称、当前正在应用的二进制日志文件的名称和位置、复制延迟(如果有的话)等。
    • 使用场景:用于监控MySQL复制的性能和状态。通过此视图,可以了解复制是否正在正常运行,以及是否存在延迟。这对于确保数据能够及时从主服务器同步到从服务器非常重要。
  • replication_applier_status_by_coordinatorreplication_applier_status_by_worker

    • 功能描述:这两个视图分别提供了按协调器(coordinator)和按工作线程(worker)组织的复制应用者状态信息。在多线程复制配置中,这些视图特别有用,因为它们可以展示每个工作线程的状态和进度。
    • 使用场景:用于监控和调试多线程复制的性能和状态。通过这两个视图,可以了解不同工作线程是否均衡地承担了复制任务,以及是否存在某些工作线程成为瓶颈的情况。
  • replication_connection_configuration

    • 功能描述:此视图提供了有关复制连接配置的信息,包括复制通道的名称、连接参数(如主机名、端口号、用户名和密码)等。
    • 使用场景:用于监控和调试MySQL复制连接配置。通过此视图,可以验证复制连接是否按照预期进行了配置,包括连接参数和认证信息是否正确。
  • replication_connection_status

    • 功能描述:此视图提供了复制连接的当前状态信息,包括复制通道的名称、连接状态(如是否已建立连接、是否存在错误等)以及任何相关的错误消息。
    • 使用场景:用于监控MySQL复制连接的性能和状态。通过此视图,可以了解复制连接是否稳定,以及是否存在任何需要解决的问题。这对于确保复制过程的连续性和可靠性非常重要。
  • replication_group_member_statshttp://www.cndba.cn/dave/article/131566

    • 功能描述:提供MySQL Group Replication(MGR)中组成员的统计信息,如接收和发送的消息数、延迟等。
    • 使用场景:监控MySQL Group Replication的性能和健康状况,确保数据复制的一致性和及时性。
  • replication_group_members

    • 功能描述:显示MySQL Group Replication中当前组成员的信息,如成员ID、角色(如PRIMARY、SECONDARY)、通信状态等。
    • 使用场景:查看当前MySQL Group Replication集群的成员构成和状态,帮助诊断和解决问题。
  • rwlock_instances

    • 功能描述:提供读写锁实例的信息,包括锁的类型、状态、等待的线程数等。
    • 使用场景:分析MySQL内部读写锁的使用情况,识别可能的锁竞争和性能瓶颈。
  • session_account_connect_attrshttp://www.cndba.cn/dave/article/131566

    • 功能描述:显示会话的账户连接属性,这些属性可以是客户端提供的,用于审计和监控。
    • 使用场景:审计和监控客户端连接到MySQL服务器的身份和属性,确保安全性和合规性。
  • session_connect_attrs

    • 功能描述:类似于session_account_connect_attrs,但可能包含更广泛的连接属性,不仅限于账户。
    • 使用场景:同样用于审计和监控客户端连接,提供更多上下文信息。
  • session_status

    • 功能描述:显示当前会话的状态变量信息。
    • 使用场景:监控和诊断特定会话的性能问题,了解会话级别的资源使用情况。
  • session_variables

    • 功能描述:显示当前会话的系统变量值。
    • 使用场景:查看和调试会话级别的配置设置,帮助优化查询和会话行为。
  • setup_actors

    • 功能描述:允许配置哪些MySQL账户可以访问performance_schema的哪些表。
    • 使用场景:控制对performance_schema的访问权限,确保安全和合规性。
  • setup_consumers

    • 功能描述:配置哪些性能事件消费者(如文件、表)被启用以收集数据。
    • 使用场景:根据需要启用或禁用性能数据的收集,以平衡性能监控和性能开销。
  • setup_instruments

    • 功能描述:配置哪些性能监控仪器(如等待事件、语句事件)被启用以收集数据。
    • 使用场景:根据需要启用或禁用特定类型的性能监控,以收集关键的性能指标。
  • setup_objects

    • 功能描述:配置哪些MySQL对象(如表、索引)的性能数据被收集。
    • 使用场景:针对特定的数据库对象进行性能监控,识别性能瓶颈。
  • setup_timershttp://www.cndba.cn/dave/article/131566

    • 功能描述:配置性能监控中使用的计时器类型(如系统时钟、CPU时钟)。
    • 使用场景:根据需要选择适当的计时器,以确保性能数据的准确性和一致性。
  • socket_instances

    • 功能描述:提供MySQL服务器套接字实例的信息,包括套接字类型、地址、端口等。
    • 使用场景:监控和诊断与MySQL服务器通信的套接字连接,确保连接稳定性和安全性。
  • socket_summary_by_event_name

    • 功能描述:按事件名称汇总套接字操作的统计信息,如连接、断开连接等。
    • 使用场景:分析套接字操作的性能,识别可能的网络延迟或连接问题。
  • socket_summary_by_instance

    • 功能描述:按套接字实例汇总操作的统计信息。
    • 使用场景:针对特定的套接字实例进行性能分析,了解单个连接的行为。
  • statusby 系列(如status_by_accountstatus_by_host等)

    • 功能描述:这些视图按不同维度(如账户、主机、线程、用户)汇总MySQL服务器的状态变量信息。
    • 使用场景:分析不同维度下的服务器性能,识别性能瓶颈和异常行为。
  • table_handles

    http://www.cndba.cn/dave/article/131566

    • 功能描述:提供表句柄的信息,包括表ID、打开表的数量等。
    • 使用场景:监控表的打开和关闭情况,确保表缓存的有效利用。
  • table_io_waits_summary_by_index_usagehttp://www.cndba.cn/dave/article/131566

    • 功能描述:此视图提供了按索引使用情况汇总的表I/O等待信息。它显示了哪些索引导致了最多的I/O等待,这对于识别哪些查询可能因为索引的使用而遇到性能瓶颈非常有用。
    • 使用场景:分析索引的使用效率,识别哪些索引可能不是最优的,或者哪些查询可能由于索引选择不当而导致了过多的I/O操作。
  • table_io_waits_summary_by_table

    • 功能描述:此视图按表汇总了I/O等待事件,提供了关于每个表在I/O操作上的等待时间和次数的统计信息。
    • 使用场景:识别哪些表是导致I/O瓶颈的主要因素,有助于数据库管理员决定是否需要优化表结构、增加缓存或调整存储配置。
  • table_lock_waits_summary_by_table

    • 功能描述:此视图提供了按表汇总的锁等待信息,包括等待次数、等待时间和锁的类型(如行锁、表锁)。
    • 使用场景:分析表的锁等待情况,识别锁争用的问题。这对于解决并发控制中的死锁、长时间锁等待等问题非常有帮助。
  • threads

    • 功能描述:此视图提供了MySQL服务器中所有线程(包括后台线程和用户会话)的详细信息,如线程ID、类型、状态、执行时间等。
    • 使用场景:监控MySQL服务器中的线程活动,了解线程的运行状态和资源使用情况。这有助于诊断性能问题,如线程阻塞、资源争用等。
  • user_variables_by_thread

    • 功能描述:此视图显示了每个线程(会话)中设置的用户定义变量的信息。
    • 使用场景:分析会话级别的用户定义变量,了解这些变量是如何被使用的,以及它们是否可能对性能产生影响。此外,这也有助于调试和审计会话行为。
  • users

    • 功能描述:此视图提供了当前连接到MySQL服务器的用户的信息,包括用户名、主机名、连接时间等。
    • 使用场景:监控和审计当前连接到MySQL服务器的用户,确保只有授权的用户才能访问数据库。此外,这也有助于识别潜在的未授权访问或异常连接。
  • variables_by_thread

    • 功能描述:此视图显示了每个线程(会话)中当前设置的系统变量的值。
    • 使用场景:分析会话级别的系统变量设置,了解这些设置如何影响查询性能。此外,这也有助于调试和优化会话级别的配置,以提高性能和兼容性。通过比较不同会话的系统变量设置,可以识别出可能导致性能差异的配置差异。
用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2261
    原创
  • 3
    翻译
  • 578
    转载
  • 191
    评论
  • 访问:7965411次
  • 积分:4346
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ