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 参数控制内存、线程、缓存、持久性和 I/O。它们应按角色记录,而不是像魔法清单一样修改。

参数类别

  1. 全局内存:innodb_buffer_pool_size、key_buffer_size、表缓存。
  2. 每会话内存:sort_buffer_size、join_buffer_size、read_rnd_buffer_size、tmp_table_size。
  3. InnoDB I/O:flush、redo log、page cleaners、读写线程。
  4. 连接:max_connections、thread cache、文件限制。
  5. 历史兼容:query cache、MyISAM 和过时参数。

方法

从 SHOW VARIABLES 和 SHOW GLOBAL STATUS 开始,然后将值与实际行为比较。如果某个高值按连接分配,可能会恶化总内存使用。

另见:参数索引。

检查生效值与作用范围

先确认实例身份及进程实际使用的值。配置文件可能遗漏启动参数覆盖、持久化值或运行时修改。全局默认值与现有会话值可能不同。提出调整之前,记录单位、作用范围、来源、是否可动态修改或需要重启,以及原值。以下清单会忽略当前版本未提供的变量。

SELECT VERSION() AS server_version, @@version_comment AS distribution;
SHOW GLOBAL VARIABLES WHERE Variable_name IN (
  'innodb_buffer_pool_size', 'innodb_log_buffer_size',
  'innodb_redo_log_capacity', 'innodb_log_file_size',
  'innodb_flush_log_at_trx_commit', 'sync_binlog',
  'max_connections', 'thread_cache_size', 'table_open_cache',
  'sort_buffer_size', 'join_buffer_size', 'tmp_table_size',
  'max_heap_table_size', 'internal_tmp_mem_storage_engine',
  'temptable_max_ram', 'temptable_max_mmap'
);
SHOW SESSION VARIABLES WHERE Variable_name IN (
  'sort_buffer_size', 'join_buffer_size', 'tmp_table_size',
  'max_heap_table_size'
);

为每类参数找到证据

类别 如何确认 需要评估的取舍
缓冲池 工作集、读取增量、进程 RSS 缓存收益与主机内存余量
Redo 容量 写入速率、日志等待、检查点压力 磁盘容量与恢复行为
会话缓冲区 实际排序、连接操作与活跃并发 按需分配和多个操作算子
连接及表限制 拒绝连接、线程创建、表打开速率 提高上限可能增加内存和争用
提交持久性 提交延迟与所需故障容忍度 吞吐量与已确认数据丢失风险

按分配行为规划内存

不要将所有配置缓冲区乘以 max_connections 并称为实际 RAM 使用量。许多查询缓冲区按需分配,一条查询可能创建多个连接缓冲区或临时表。区分全局内存、已连接会话开销和活跃查询内存,并保留压力场景用于分析。计入操作系统、其他服务和采集开销,再将模型与测得的 RSS 和内存压力比较。

MySQL TempTable 通过 temptable_max_ram 管理共享 RAM 预算;从 MySQL 8.0.28 起,tmp_table_size 也限制每个内部 TempTable 表。基于 MEMORY 的内部临时表使用 tmp_table_size 与 max_heap_table_size 的较小值。这些规则依赖引擎和版本。Redo 日志容量属于磁盘空间,innodb_log_buffer_size 属于 RAM,不能将两者都计入内存总量。

注意版本与持久化边界

MySQL 8.0.30 引入 innodb_redo_log_capacity,更早版本使用 redo 文件大小变量。查询缓存属于较早的 MySQL 版本,已在 MySQL 8 中移除。MariaDB 有自己的变量生命周期,需查阅其官方手册。未经验证,不要向新版本复制包含未知或已删除变量的配置。

每项变更都应确认影响现有会话、新会话,还是需要重启。运行时全局修改不一定持久化;MySQL SET PERSIST 会写入单独的持久化配置。保持运行值与预期重启值一致,分别记录回滚方案,并在受控环境测试重连和重启行为。同一负载下逐个验证假设,保持所需持久性,避免为醒目的吞吐量数字牺牲可靠性。

继续排查

  • 使用内存计算器构建分配场景,通过参数索引查看单项配置。

官方参考资料

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