mysql官方windows安装包自5.7起移除windows performance counter支持,故perfmon中无mysql类别;替代方案包括通过performance_schema配合powershell/typeperf写入自定义计数器,或采用mysqld_exporter+prometheus+grafana、mysql workbench仪表盘等更可靠的监控组合。

MySQL 本身不向 Windows Performance Monitor(PerfMon)暴露原生计数器,直接在 PerfMon 里找不到 MySQL 类别或相关性能对象。这不是配置遗漏,而是 MySQL 官方 Windows 二进制包默认不编译 Performance Counter 支持。
为什么 PerfMon 里没有 MySQL 计数器
MySQL for Windows 在源码编译时需显式启用 -DWITH_PERFSCHEMA=ON 和 -DWITH_WINDOWS_PERFMON=ON,但官方预编译的 MSI 安装包(包括 MySQL Installer)**从 5.7 起就移除了 Windows Performance Counter 支持**,且未提供开关或文档说明。即使你看到某些老教程提到 MySQL 计数器,那基本对应的是 MySQL 5.1–5.5 时代的旧版本,现已失效。
尝试手动注册或运行 mysqld --install 也不会生成计数器;lodctr /q 输出中查不到 MySQL 条目,就是最直接的证据。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
替代方案:用 Performance Schema + 外部采集桥接 PerfMon
虽然不能直连 PerfMon,但你可以让 MySQL 的 performance_schema 数据被外部工具读取,并通过 Windows 性能计数器代理(如 typeperf 或自定义 .NET/PowerShell 工具)写入 PerfMon。关键路径是:
- 确保
performance_schema = ON(检查SHOW VARIABLES LIKE 'performance_schema'返回ON) - 启用关键 instruments,例如:
UPDATE performance_schema.setup_instruments SET ENABLED = 'YES' WHERE NAME LIKE '%statement/%' OR NAME LIKE '%wait/io/file%'; - 用 PowerShell 脚本定期查询
sys.statement_analysis或performance_schema.events_statements_summary_global_by_digest,提取AVG_TIMER_WAIT、COUNT_STAR等字段 - 将结果通过
logman创建自定义数据收集器集,或用typeperf写入 CSV 后导入 PerfMon 历史视图
更实用的 Windows 原生监控组合
与其强求 PerfMon 兼容,不如采用 Windows 友好、开箱即用的替代链:
-
mysqld_exporter + Prometheus + Grafana:Windows 上可直接运行
mysqld_exporter.exe(需配my.cnf),它把 MySQL 指标转成 HTTP 端点;Prometheus 抓取后,Grafana 可自由绘图。这是目前 Windows 下最稳定、指标最全的方案 -
MySQL Workbench 的 Performance Dashboard:无需额外服务,连接后直接查看
QPS、Threads_connected、InnoDB Buffer Pool Hit Rate等实时曲线,适合日常巡检 -
PowerShell + SHOW STATUS 自动化:写一个循环脚本,每 10 秒执行
mysql -u root -e "SHOW GLOBAL STATUS LIKE 'Threads%'",输出追加到日志,再用Get-Counter关联系统级指标(如\Processor(_Total)\% Processor Time)做横向对比
真正卡住的地方不是“怎么配 PerfMon”,而是接受 MySQL 不提供 Windows 原生计数器这个事实——所有绕过它的方案,本质都是把 MySQL 当作一个 HTTP 或 SQL 接口来消费,而非 Windows 服务组件。强行注入计数器不仅不可靠,还会因权限、UAC、服务账户上下文等问题失败。










