当前位置: 首页 > 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.dtcms.com/a/291705.html

相关文章:

  • React 项目性能优化概要
  • Vue-21-利用Vue3的axios+Python的flask实现前后端交互功能
  • 精密全波整流电路(二)
  • 以太网基础⑥ ZYNQ PS端 基于LWIP的TCP例程测试
  • uniapp “requestPayment:fail [payment支付宝:62009]未知错误“
  • 渗透第2次作业
  • 从零开始:Vue 3 + TypeScript 项目创建全记录
  • C++刷题常用方法
  • uniapp请求封装上传
  • DeepSPV:一种从2D超声图像中估算3D脾脏体积的深度学习流程|文献速递-医学影像算法文献分享
  • 从0到1:盲盒抽卡小程序开发全流程解析
  • 浙江大学PTA程序设计C语言基础编程练习题1-5
  • 【Python办公】Excel工作表拆分工具(按照sheet进行拆分-calamine-极速版)
  • Linux系统安装Bash自动补全(bash-completion)
  • 【React-Three-Fiber实践】放弃Shader!用顶点颜色实现高性能3D可视化
  • Python关于pandas的基础知识
  • 使用Minio后处理图片回显问题
  • Linux部署.net Core 环境
  • Claude 4 系列模型深度解析:引领 AI 编程与智能体应用新纪元
  • UE5 UI 控件切换器
  • Web3介绍(Web 3.0)(一种基于区块链技术的去中心化互联网范式,旨在通过技术手段实现用户对数据的自主权、隐私保护和价值共享)
  • 【Qt开发】Qt的背景介绍(四)
  • MatterPort3D 数据集 | 简介 | 多途径下载
  • Aspose.Cells 应用案例:法国能源企业实现能源数据报告Excel自动化
  • UE创作一个可以变更列数的万能表格
  • Excel file format cannot be determined, you must specify an engine manually.
  • 如何撤销Git提交误操作
  • 实用资源分享:50款出入库单据Excel模板集合
  • DFS习题篇【下】
  • 北京养老金计算公式网页实现案例:从需求分析到架构设计