mysql中的性能模式是什么_mysql performance_schema概念

12次阅读

Performance Schema 是 MySQL 内置的内存级实时性能监控系统,提供 events_statements_history 等只读虚拟表,聚焦 SQL 执行、等待事件与线程行为,需通过 my.cnf 配置开启并用 setup_instruments/consumers 控制采集粒度。

mysql 中的性能模式是什么_mysql performance_schema 概念

MySQL 中的性能模式(Performance Schema)是一个内置的、运行在数据库内核层的实时监控系统,它不是日志,也不是插件,而是一套由内存表构成的“性能数据接口”。它的核心作用是让管理员和开发者能直接观察 MySQL 服务器内部正在发生的操作——比如某条 SQL 正在等锁、某个线程卡在磁盘 I/O、索引为何没被用上。

它本质上是一个只读的系统数据库

performance_schema 是 MySQL 启动时自动创建的数据库,和 information_schemamysql 并列。但它里面的表(如 events_statements_historyevents_waits_current)不是磁盘文件,而是内存中动态生成的虚拟表:

  • 你不能对它们执行 INSERT/UPDATE/DELETE
  • 没有 .ibd 或 .frm 数据文件(只有空的 .frm 结构文件)
  • 重启后所有数据清空,启动时重新采集
  • 查询时,MySQL 实时从内存 instrumentation 点拉取当前状态返回

它专注的是“性能事件”,不是元数据或业务数据

information_schema(查表结构、列名、权限)不同,performance_schema 关注的是“发生了什么、耗时多少、谁在等、等什么”:

  • SQL 执行阶段:parsing、sorting、sending data
  • 等待事件:mutex 锁、file I/O、table lock、socket read
  • 线程行为:活跃线程数、每个线程最近执行的 10 条语句
  • 资源使用:内存分配、临时表创建、全表扫描次数

它默认开启但常被云环境关闭

MySQL 5.6+ 默认启用 performance_schema,但在多数云数据库(如 阿里云 RDS、 腾讯 云 CDB)中为节省资源,默认设为 OFF:

  • 确认是否开启:SHOW VARIABLES LIKE 'performance_schema'; → 返回 ON 才可用
  • 开启方式:必须在 my.cnf[mysqld] 段添加 performance_schema=ON,然后重启 mysqld
  • 注意:这是只读启动参数,无法在线动态开启

它靠配置表控制采集粒度和开销

performance_schema 本身轻量,但具体采集哪些内容,由两张关键配置表决定:

  • setup_instruments:开关各类事件采集(如 statement/sql/selectwait/io/file/innodb/innodb_data_file
  • setup_consumers:决定采集结果是否写入历史表(如关掉 events_statements_history 可大幅降低 内存占用
  • 修改后立即生效,无需重启
text=ZqhQzanResources