本文共 2343 字,大约阅读时间需要 7 分钟。
MySQL 5.7.2 到 5.7.3 版本中,Performance Schema(PS)得到了多项重要更新,极大提升了数据库性能监控与分析能力。本文将重点介绍这些新特性,并结合实际场景分析其应用价值。
MySQL 5.7.2 引入了内存监控功能,通过 Performance Schema 可以实时监控数据库内存分配与释放情况,具体包括:
memory_summary_by_account_by_event_name
等表格,按账户、主机、用户、事件名等维度分类统计内存使用情况。COUNT_ALLOC/COUNT_FREE
:记录内存分配与释放次数。SUM_NUMBER_OF_BYTES_ALLOC/SUM_NUMBER_OF_BYTES_FREE
:统计分配与释放字节数。CURRENT_COUNT_USED/CURRENT_NUMBER_OF_BYTES_USED
:反映当前内存使用状态。LOW_COUNT_USED/HIGH_COUNT_USED
和 LOW_NUMBER_OF_BYTES_USED/HIGH_NUMBER_OF_BYTES_USED
:显示内存使用的波动范围。通过这些表和字段,管理员可以精准了解内存分配与释放的频率及规模,尤其在纯 CPU Bound 场景下,内存分配释放往往成为性能瓶颈。
MySQL 5.7.2 进一步扩展了 Performance Schema 的应用场景,新增了对存储过程、函数、触发器及事件调度器的监控支持。具体体现在:
setup_instruments
表中新增了如 statement/scheduler/eventstatement/sp/%
的监控项,覆盖存储过程等关键组件。setup_objects
表,可配置新的对象类型,包括 PROCEDURE
、EVENT
、FUNCTION
、TRIGGER
等。NESTING_LEVEL
字段,反映操作的嵌套层次。这些更新使 Performance Schema 能够更全面地监控和分析数据库中的复杂操作,特别是多层嵌套的存储程序执行情况。
MySQL 5.7.2 版本中,Performance Schema 对复制相关表的支持进一步完善,新增了多个与复制相关的监控表,包括:
replication_connection_configuration
:记录复制任务的配置信息,涵盖主机、端口、用户、网络接口等。replication_connection_status
:展示备库 IO 线程的连接状态,包括 UUID、线程 ID、服务状态等。replication_execute_status_by_coordinator
和 replication_execute_status_by_worker
,用于监控复制任务的执行状态。这些表为管理员提供了更全面的复制任务监控能力,尤其是在处理大规模复制场景时,可快速定位和解决复制故障。
自 MySQL 5.5 引入 MDL(Metadata Lock)以来,管理员一直对其行为和性能有诸多疑问。MySQL 5.7.3 版本中,Performance Schema 引入了专门的监控表来追踪 MDL 锁状态,具体包括:
metadata_locks
表:记录 MDL 锁的相关信息,如锁类型、持锁线程及事件 ID 等。table_handles
表:展示对特定表的锁信息,包括锁类型和外部锁状态。这些新增功能使管理员能够实时观察 MDL 锁的使用情况,尤其是在执行 mysqldump
或 xtrabackup
等备份操作时,及时发现和解决可能导致事务阻塞的问题。
MySQL 5.7.3 版本中,Performance Schema 对事务级别的事件进行了监控扩展,新增了 events_transactions_current
等表,用于追踪事务执行情况,具体包括:
ACTIVE
、COMMITTED
或 ROLLED BACK
。这些新增功能为数据库管理员提供了更全面的事务监控能力,尤其在处理长时间运行的事务时,能够快速定位性能瓶颈。
MySQL 5.7 系列版本中,Performance Schema 的持续扩展为数据库性能监控与优化提供了更强大的工具。从内存监控到复制信息表,再到 MDL 锁和事务监控,每一项新增功能都为管理员在性能调优和故障排查中提供了更多可能性。未来,随着 Performance Schema 的不断完善,数据库管理将更加智能化和高效。
转载地址:http://znbfk.baihongyu.com/