PmaControl logo PmaControl
  • 首页
  • PmaControl
    • AI智能代理 13个本地代理
    • 定价方案 Community、Cloud、On-Premise、Premium
    • 文档 指南、API、架构
    • 版本历史 全部 5.x 稳定版本
    • 插件市场 社区插件
    • 客户 28+企业
    • 常见问题 25个问题 / 7个类别
    数据库
    • MariaDB 35 篇文章
    • MySQL 15 篇文章
    • Galera Cluster 6 篇文章
    • MaxScale 4 篇文章
    • ProxySQL 3 篇文章
    • Amazon Aurora MySQL 0 篇文章
    • Azure Database 0 篇文章
    • ClickHouse 0 篇文章
    • GCP CloudSQL 0 篇文章
    • Percona Server 0 篇文章
    • SingleStore 0 篇文章
    • TiDB 0 篇文章
    • Vitess 0 篇文章
    解决方案
    • 全天候支持 MariaDB & MySQL紧急支持
    • Observabilité SQL 监控、告警、拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Sécurité & conformité 审计、GDPR、SOC2
    • Migration & upgrade 零停机、pt-osc、gh-ost
  • 定价方案
  • 资源
    • 文档 技术指南与API
    • MySQL 优化中心 Markdown 索引、指标、参数、故障
    • 常见问题 25个常见问题
    • 客户评价 客户反馈与案例
    • 博客 文章与洞察
    • 路线图 即将推出的功能
    专业领域
    • Observabilité SQL 监控、告警、Dot3拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Sécurité & conformité 审计、GDPR、SOC2、ISO 27001
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Performance & optimisation Digests、EXPLAIN、调优
    • Migration & upgrade 零停机、pt-osc
    快速链接
    • GitHub Wiki 26页 — 安装、引擎、插件
    • 源代码 GitHub官方仓库
    • 全天候支持 MariaDB & MySQL紧急支持
    • 预约演示 30分钟 — 真实架构
  • 全天候支持
  • 预约演示
预约演示
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
资源 › MySQL 优化中心 › MySQL 性能调优

MySQL 性能调优

用于诊断、衡量和优化 MySQL 的结构化 Markdown 文档。

本页是 PmaControl 的原创文档。它保留了用于 MySQL 优化工作的实用索引结构,不复制第三方内容,也不依赖外部产品。

目标

MySQL 调优的目标是降低延迟、稳定吞吐量并避免反复饱和。工作必须从真实测量开始,而不是复制其他服务器上的通用值。

建议的工作顺序

  1. 采集真实负载:QPS、延迟、错误、连接数、磁盘 I/O、内存和 CPU。
  2. 使用 performance_schema、慢日志或 digest 工具识别主要查询。
  3. 检查架构:缺失索引、冗余索引、过宽类型以及没有主键的表。
  4. 调整 InnoDB:buffer pool、redo log、flush、I/O 线程和持久性策略。
  5. 复核服务器限制:连接数、打开文件、表缓存和临时表大小。
  6. 在受控窗口测试,并准备记录清楚的回滚方案。

有用命令

SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Questions';
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_reads';
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

要点

好的 MySQL 调优是渐进式的。没有前后测量就修改变量,会形成运维债务。

建立可比较的基线

记录数据库的准确版本、主机资源、数据集大小、应用版本、流量构成及观测窗口。区分客户端响应时间与 SQL 执行时间:即使单条查询很快,连接池排队、网络往返和应用处理仍可能主导整个请求。变更前后应保持相同的负载和并发度。

SELECT VERSION() AS server_version, @@version_comment AS distribution;
SHOW GLOBAL STATUS WHERE Variable_name IN (
  'Uptime', 'Questions', 'Threads_connected', 'Threads_running',
  'Innodb_buffer_pool_read_requests', 'Innodb_buffer_pool_reads',
  'Innodb_log_waits', 'Created_tmp_tables', 'Created_tmp_disk_tables'
);

在具有代表性的间隔内获取两次快照。Questions 是累计计数器:客户端语句速率 = ΔQuestions / 间隔秒数,而非计数器原值。重启或计数器重置会使该区间失效。同时记录请求延迟的 p50、p95、p99、完成的工作量及错误;平均值降低可能掩盖尾部延迟恶化。

找出消耗资源的查询

SELECT SCHEMA_NAME, LEFT(DIGEST_TEXT, 140) AS digest,
       COUNT_STAR AS executions,
       ROUND(SUM_TIMER_WAIT / 1000000000000, 3) AS total_seconds,
       ROUND(AVG_TIMER_WAIT / 1000000000, 3) AS average_ms,
       SUM_ROWS_EXAMINED, SUM_ROWS_SENT
FROM performance_schema.events_statements_summary_by_digest
WHERE DIGEST IS NOT NULL
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

该 MySQL Performance Schema 查询按累计执行时间排序,并非最近窗口的 p95。计时单位为皮秒。检查采集是否启用及重置历史;空结果不能证明服务器没有负载。频繁的短查询可能比单条慢查询消耗更多资源。比较扫描行数和返回行数,然后用典型参数执行 EXPLAIN FORMAT=JSON。EXPLAIN ANALYZE 会实际执行语句,应在受控环境及支持的版本中使用。

根据瓶颈选择措施

信号 如何确认 下一步
CPU 使用率高 查询成本、扫描、活跃线程 减少扫描行数与无效工作
读 I/O 压力 物理读取增量与存储延迟 检查访问路径与工作集是否适配
写入停顿 日志等待、刷盘延迟、事务大小 检查 redo 容量和存储,保持所需持久性
锁等待 阻塞事务与访问顺序 缩短事务并检查索引

逐项验证变更

写明假设、原参数或原表结构、预期收益和回滚条件。采用一致的缓存预热方式,重复有代表性的试验并保留原始结果。综合比较延迟、吞吐量、错误、CPU、内存、I/O 与复制延迟。若加速导致结果正确性、持久性或其他重要负载退化,应拒绝该变更。保留变更前还需验证高峰流量及完整业务周期。

继续排查

  • 通过健康检查确认可用性和容量。
  • 结构检查与性能参数提供具体调整方法。

官方参考资料

  • MySQL Performance Schema
  • MySQL EXPLAIN
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
法律声明 GitHub 联系我们
不要等到故障发生才了解您的架构。 © 2014-2026 PmaControl — 68Koncept