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

MySql 运维性能优化

  1. 内存相关配置
    innodb_buffer_pool_size:这是 InnoDB 存储引擎最重要的参数,用于缓存数据和索引。建议设置为服务器可用内存的 50%-70%(对于专用数据库服务器)。
innodb_buffer_pool_size = 8G  # 根据服务器内存调整

innodb_log_buffer_size:用于缓存 InnoDB 日志。对于写入频繁的系统,可适当调大(默认 16M):

innodb_log_buffer_size = 64M

key_buffer_size:用于 MyISAM 表的索引缓存(如果使用 MyISAM):

key_buffer_size = 256M

query_cache_size:注意 MySQL 8.0 已移除查询缓存,对于 5.7 及以下版本,如果查询重复率高可开启:

query_cache_size = 64M
query_cache_type = 1
  1. 连接与线程配置
    max_connections:最大并发连接数,根据业务需求调整:
max_connections = 1000

thread_cache_size:线程缓存大小,减少创建新线程的开销:

thread_cache_size = 64

wait_timeout 和 interactive_timeout:控制空闲连接超时时间,避免连接泄露:

wait_timeout = 600
interactive_timeout = 600
  1. InnoDB 存储引擎优化
    innodb_flush_log_at_trx_commit:控制事务日志刷新策略:
    1(默认):每次事务提交都刷新到磁盘,最安全但性能较低
    0:每秒刷新一次,性能好但可能丢失 1 秒数据
    2:提交时写入日志文件但不立即刷新到磁盘
innodb_flush_log_at_trx_commit = 1  # 对数据安全性要求高时使用

innodb_file_per_table:为每个表创建独立的表空间,便于管理:

innodb_file_per_table = 1

innodb_log_file_size 和 innodb_log_files_in_group:日志文件大小和数量:

innodb_log_file_size = 1G
innodb_log_files_in_group = 2

innodb_flush_method:控制 InnoDB 如何刷新数据到磁盘,建议在 Linux 下使用 O_DIRECT:

innodb_flush_method = O_DIRECT
  1. 查询优化相关
    slow_query_log:开启慢查询日志,便于定位性能问题:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2  # 超过2秒的查询记录为慢查询

join_buffer_size:表连接缓存,不宜过大(默认 256K):

join_buffer_size = 256K

sort_buffer_size:排序缓存,每个连接独占,不宜过大:

sort_buffer_size = 2M
  1. 其他重要配置
    max_allowed_packet:控制最大数据包大小,对于大字段(如 TEXT)需要调大:
max_allowed_packet = 64M

table_open_cache:表缓存数量,根据数据库表数量调整:

table_open_cache = 2048

innodb_read_io_threads 和 innodb_write_io_threads:IO 线程数量,多核服务器可增加:

innodb_read_io_threads = 8
innodb_write_io_threads = 8

优化建议
根据工作负载调整:OLTP(事务处理)和 OLAP(分析处理) workload 需要不同的配置
逐步调整:每次只修改少数参数,测试性能变化
监控效果:使用SHOW STATUS、SHOW VARIABLES和EXPLAIN等工具监控优化效果
定期更新统计信息:执行ANALYZE TABLE或开启innodb_stats_auto_recalc
考虑硬件因素:配置应与服务器硬件(CPU、内存、磁盘类型)相匹配
配置优化后,需要重启 MySQL 服务使更改生效,并通过实际负载测试验证优化效果。

http://www.lryc.cn/news/595715.html

相关文章:

  • 前端项目启动后,只有localhost地址,没有ip地址
  • MoonBit Meetup 杭州站丨 探讨AI基础软件的精彩回顾
  • 面向对象分析与设计40讲(6)设计原则之开闭原则
  • pandas库的基本运用
  • 传统RNN模型
  • vcs门级仿真(后仿真)指南
  • Spring、Spring MVC、Spring Boot、Spring Cloud的联系和区别
  • 异构融合 4A:重构高性能计算与复杂场景分析的安全与效率边界
  • gpt面试题
  • MCP vs 传统集成方案:REST API、GraphQL、gRPC的终极对比
  • 深入浅出Proxy与Reflect:从“黑中介“到“数据管家“的进阶之路
  • OpenCV Mat UMat GpuMat Matx HostMem InputArray等设计哲学
  • 京东AI投资版图扩张:具身智能与GPU服务器重构科研新范式
  • 基于单片机智能药盒/智能药箱/定时吃药系统
  • PHP 文件上传
  • Python----大模型(基于Fastapi+streamlit的机器人对话)
  • 自研能管项目开发界面
  • 【Linux基础知识系列】第五十六篇 - 使用File命令识别文件类型
  • 记一次flink资源使用优化
  • Java内部类与Object类深度解析
  • 聊聊登录接口的混合加密:AES+RSA双剑合璧
  • 【node】npm包本地开发与调试
  • 深入解析Hadoop中的Region分裂与合并机制
  • 关于集合的底层数据结构
  • 【C++进阶】揭秘list迭代器:从底层实现到极致优化
  • Pulsar存储计算分离架构设计之Broker无状态
  • 飞算科技:用AI与数智科技,为产业数字化转型按下“加速键”
  • 《声音分类模型》
  • 一、Vue概述以及快速入门
  • 深度学习 --- 激活函数