当前位置: 首页 > news >正文

MySQL 8.x的性能优化文档整理

一、内存与缓冲优化

# InnoDB缓冲池(内存的60%-80%)
innodb_buffer_pool_size = 12G      # 核心参数
innodb_buffer_pool_instances = 8   # 8核CPU建议分8个实例# 日志缓冲区与Redo日志
innodb_log_buffer_size = 256M      # 事务日志缓冲区
innodb_log_file_size = 4G          # Redo日志文件大小
innodb_log_files_in_group = 3      # Redo日志组文件数量# 内存临时表
tmp_table_size = 512M              # 内存临时表上限
max_heap_table_size = 512M         # 内存表最大值

二、连接与线程优化

# 连接控制
max_connections = 1000             # 最大连接数
thread_cache_size = 100            # 线程缓存数(建议max_connections的10%)
table_open_cache = 2000            # 表缓存数量# InnoDB线程优化
innodb_thread_concurrency = 16     # 并发线程数(建议CPU核心数*2)
innodb_read_io_threads = 16        # 读线程数(8核CPU建议16)
innodb_write_io_threads = 16       # 写线程数(8核CPU建议16)

三、事务与日志优化

# 事务持久化策略
innodb_flush_log_at_trx_commit = 1 # 生产环境建议1(安全优先)/测试环境可设2
sync_binlog = 1                    # Binlog同步策略# Binlog配置
binlog_expire_logs_seconds = 2592000  # Binlog保留30天(替代expire_logs_days)
binlog_cache_size = 8M             # 事务Binlog缓存

四、查询与锁优化

# 查询缓冲区
sort_buffer_size = 8M              # 排序缓冲区(避免过大)
read_buffer_size = 8M              # 全表扫描缓冲区
join_buffer_size = 8M              # JOIN操作缓冲区# 锁与超时
innodb_lock_wait_timeout = 50      # 行锁等待超时(秒)
lock_wait_timeout = 120            # 元数据锁超时

五、网络与安全

max_allowed_packet = 64M           # 最大数据包限制
skip_name_resolve = ON             # 禁用DNS解析加速连接
lower_case_table_names = 1         # 表名不区分大小写

六、监控与诊断

# 慢查询日志
slow_query_log = ON                # 启用慢查询日志
long_query_time = 1                # 记录超过1秒的查询
log_queries_not_using_indexes = ON # 记录无索引查询# Performance Schema
performance_schema = ON            # 启用性能监控

调优验证步骤

  1. 压力测试工具
    使用sysbench模拟业务负载(OLTP读写比例推荐8:2):

    sysbench oltp_read_write --threads=16 --time=300 --mysql-host=localhost --mysql-user=root run
    
  2. 监控指标

    • 通过SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%'检查缓冲池命中率(目标>95%)
    • 通过SHOW STATUS LIKE 'Threads_%'监控线程状态
    • 使用pt-query-digest分析慢查询日志
  3. 动态调整

    SET GLOBAL innodb_flush_log_at_trx_commit=2;  -- 临时调整事务提交策略
    SET GLOBAL tmp_table_size=1024*1024*1024;     -- 调整临时表大小
    
http://www.dtcms.com/a/340973.html

相关文章:

  • JavaScript 性能优化实战(易懂版)
  • InfluxDB 查询性能优化实战(一)
  • 【PSINS工具箱】平面上的组合导航,观测量为位置、速度、航向角。附完整的MATLAB代码
  • sqli-labs通关笔记-第58关 GET字符型报错注入(单引号闭合 限制5次探测机会)
  • 六大缓存(Caching)策略揭秘:延迟与复杂性的完美平衡
  • git-git submodule和git subtree的使用方式
  • 大规模IP轮换对网站的影响(服务器压力、风控)
  • CISP-PTE之路--05文
  • 企业微信2025年发布会新功能解读:企业微信AI——2025年企业协作的「最优解」是如何炼成的?
  • 跨境电商独立站搭建多少钱?响应式设计 + 全球 CDN 加速服务
  • IBMS系统集成平台具备哪些管理优势?核心价值体现在哪里?
  • HTTP/1.1 与 HTTP/2 全面对比:性能革命的深度解析
  • 工控PID控制器学习总结
  • [element-plus] el-tree 拖拽到其他地方,不拖拽到树上
  • 怎么确定mongodb是不是链接上了?
  • 疏老师-python训练营-day51复习日+退款开始
  • AP数学课程AB和BC怎么选?AP数学课程培训机构推荐哪家?
  • Git 新手完全指南(一):从零开始掌握版本控制
  • .gitignore 文件 记录
  • git报错解决:ssh: connect to host github.com port 22: Connection refused
  • 阶跃星辰 StepFun 入驻 GitCode 平台,带来工业级 AI 体验
  • macos 多个版本的jdk
  • 版本软件下载电脑适配说明
  • 【数据类型】
  • UE5 PCG 笔记(二) Difference 节点
  • 从天线到芯片封装,CST如何赋能高频设计全流程
  • MySQL程序和选项文件配置
  • 【Coze】Windows 环境下使用 Docker 部署 Coze Studio 的详细指南
  • 力扣面试150(61/100)
  • Leetcode 深度优先搜索 (11)