MySQL-PerformanceSchema
MySQL-PerformanceSchema
PerformanceSchema
Performance Schema是提供了MySQL服务器内部运行的操作上的底层指标
消费者表
实上,MySQL 8.0.25社区 版的performance_schema中包含110个表。基于它们的用途,可分为以 下几个类别。
当前和历史数据
存放事件的表名包含如下结尾:
*current 当前服务器上进行中的事件
_history 每个线程最近完成的10个事件
history_long 从全局来看,每个线程最近完成的10000个事件
_ _history和_history_long表的大小是可配置的
以下是当前和历史数据
events_waits 底层服务器等待,例如获取互斥对象
events_statements SQL查询语句
events_stages 配置文件信息,例如创建临时表或发
events_transactions 事务
汇总表和摘要:
- 汇总表保存有关该表所建议的内容的聚合信息。例如,memory_summary_by_thread_by_event_name表保存了用户连接或任何后 台线程的每个MySQL线程的聚合内存使用情况
局限性
- 它必须得到MySQL组件的支持。 例如,假设使用内存插桩来计算哪个MySQL组件或线程使用了大 部分内存。你发现使用最多内存的组件是一个不支持内存插桩的 存储引擎。在这种情况下,你将无法找到内存的去向。
- 它只在特定的插桩和用户启用后才收集数据。 例如,如果在禁用所有插桩的情况下启动服务器,然后决定检测 内存使用情况,则无法知道全局缓冲区(如InnoDB缓冲池)分配 的确切数量,因为在启用内存插桩之前已分配了该缓冲区。
- 它很难释放内存 可以在启动时限制消费者表的大小,也可以让其自动调整大小。 在后一种情况下,它们不会在启动时分配内存,而是仅在收集启 用的数据时分配内存。但是,即使以后禁用了特定的插桩或消费 者表,也不会释放内存,除非重新启动服务器
sys Schema
自5.7版以来,标准MySQL发行版包括一个和performance_schema数据 配套使用的sys schema,它全部基于performance_schema上的视图和存 储例程组成。它的设计目的是让performance_schema体验更加流畅,它 本身并不存储任何数据
配置
performance_schema的起停
有三个方法可以实现启用和禁用performance_schema
使用setup_instruments表。
调用sys schema中的ps_setup_enable_instrument存储过程
使用performance-schema-instrument启动参数。
- 使用setup_instruments表(重启失效)如前所述,两种方法都允许在线更改performance_schema配置,但是数 据库重启之后配置就会失效。如果要在重启之后保留特定插桩的配 置,需要使用performance-schema-instrument配置参数。
update performance_schema.setup_instruments |
- 调用sys schema中的ps_setup_enable_instrument存储过程(重启失效)
- 启动选项
如前所述,两种方法都允许在线更改performance_schema配置,但是数 据库重启之后配置就会失效。如果要在重启之后保留特定插桩的配 置,需要使用performance-schema-instrument配置参数。
启用或禁用消费者表
- 使用Performance Schema中的setup_consumers表。
- 调 用 sys schema 中 的 ps_setup_enable_consumer 或 ps_setup_disable_consuper存储过程。
- 使用performance-schema-consumer启动参数