一、基础配置

[mysqld]
# 声明以下配置属于MySQL服务器(mysqld)

[mysqld]:配置文件的模块标识,表示这是 MySQL 服务器的配置段。

二、路径与基础设置

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

datadir:数据库文件存储路径(表数据、索引等)。
socket:Unix 套接字文件路径(本地客户端通过此文件连接 MySQL)。
pid-file:MySQL 进程 ID 文件路径(用于管理 MySQL 服务)。
character-set-server:服务器默认字符集(utf8mb4支持所有 Unicode 字符,包括 emoji)。
collation-server:字符集排序规则(utf8mb4_unicode_ci表示不区分大小写)。

三、内存配置(最核心)

innodb_buffer_pool_size=5G
innodb_log_buffer_size=64M
key_buffer_size=64M

innodb_buffer_pool_size:InnoDB 存储引擎的缓存池大小(缓存数据和索引)。
建议:设为服务器内存的 50%-70%(示例中 8GB 内存分配 5GB)。值越大,磁盘 IO 越少,性能越好。
innodb_log_buffer_size:InnoDB 日志缓冲区大小(临时存储待写入磁盘的事务日志)。
建议:写操作频繁时调大(如 64M-128M),减少磁盘 IO。
key_buffer_size:MyISAM 引擎的索引缓存(InnoDB 用户可设小值)。
建议:若全用 InnoDB,设为 32M-64M(MySQL 5.7 + 默认 InnoDB,MyISAM 已淘汰)。

四、连接管理

max_connections=500
wait_timeout=300
interactive_timeout=300
max_user_connections=100

max_connections:允许的最大并发连接数。
建议:根据业务峰值调整(如电商秒杀场景可设 1000)。
注意:每个连接约占 1-4MB 内存,避免设置过大导致内存溢出。
wait_timeout/interactive_timeout:非交互式 / 交互式连接的空闲超时时间(秒)。
建议:设为 300 秒(5 分钟),避免空闲连接长期占用资源。
max_user_connections:单个用户的最大连接数。
建议:设为 100-200,防止单个用户耗尽连接资源。

五、InnoDB 引擎优化(重点)

innodb_flush_log_at_trx_commit=1
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_io_capacity=2000
innodb_read_io_threads=4
innodb_write_io_threads=4

innodb_flush_log_at_trx_commit:事务日志刷新策略(影响安全性与性能)。
1(默认):每次事务提交立即刷盘(最安全,性能略低);
2:提交后写入操作系统缓存,每秒刷盘(性能好,断电可能丢 1 秒数据);
0:每秒刷盘(性能最好,风险最高)。
建议:生产环境优先选1,非核心场景可选2。
innodb_file_per_table:是否为每个表创建独立的.ibd文件。
建议:设为1(开启),方便单独管理表空间(如删除表释放磁盘空间)。
innodb_flush_method:日志 / 数据文件的刷盘方式。
建议:Linux 设为O_DIRECT(避免双重缓存),Windows 忽略此参数。
innodb_io_capacity:InnoDB 的 IO 吞吐量上限(影响后台刷盘效率)。
建议:机械硬盘设 1000,SSD 设 2000-20000(根据实际性能调整)。
innodb_read/write_io_threads:读写 IO 线程数(提升并发 IO 能力)。
建议:根据 CPU 核心数调整(如 4-8 核设为 4-8),默认值为 4。

六、查询优化

slow_query_log=1
long_query_time=1
slow_query_log_file=/var/log/mysql/slow.log
join_buffer_size=512K
sort_buffer_size=2M

slow_query_log:是否开启慢查询日志(记录执行时间超过阈值的 SQL)。
建议:必须开启(设为1),用于定位需要优化的 SQL。
long_query_time:慢查询阈值(秒)。
建议:设为 1 秒(敏感业务可设 0.5 秒)。
slow_query_log_file:慢查询日志存储路径。
建议:确保路径存在且 MySQL 有写入权限。
join_buffer_size/sort_buffer_size:表连接(JOIN)和排序(ORDER BY)的缓存大小。
建议:不宜过大(每个连接独立分配),避免内存溢出。

七、其他重要参数

max_allowed_packet=128M
table_open_cache=2048
thread_cache_size=32
log_error=/var/log/mysql/error.log

max_allowed_packet:单个 SQL 语句 / 数据包的最大大小。
建议:若有大字段(如 TEXT/BLOB)或批量插入,设为 128M-1G(避免 “Packet too large” 错误)。
table_open_cache:表缓存(缓存打开的表文件描述符)。
建议:根据数据库表数量调整(如 1000 张表设 2048),减少重复打开表的开销。
thread_cache_size:线程缓存(复用空闲线程,减少创建 / 销毁开销)。
建议:并发高时调大(如 32-64),可通过Threads_created状态值判断是否足够。
log_error:错误日志路径。
建议:必须开启,用于排查 MySQL 启动 / 运行错误(如崩溃、权限问题)。

八、配置验证命令

修改配置后,可通过以下命令验证参数是否生效:

-- 查看所有配置(模糊搜索)
SHOW VARIABLES LIKE '参数名';-- 示例:查看innodb_buffer_pool_size
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';-- 查看MySQL状态(如连接数、缓存命中率)
SHOW STATUS;

九、注意事项

重启生效:修改配置文件后需重启 MySQL 服务(systemctl restart mysqld)。
动态调整:部分参数支持在线修改(无需重启),例如:
SET GLOBAL max_connections=500;(仅临时生效,重启后恢复配置文件值)。
监控与迭代:定期分析慢查询日志(用pt-query-digest工具),优化高频低效 SQL。
通过理解每个参数的作用,你可以根据服务器硬件和业务特点灵活调整配置,实现 MySQL 性能的最大化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89714.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89714.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89714.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs靶场通关笔记:第32-33关 宽字节注入

第32关 宽字节注入查看一下本关的源代码:function check_addslashes($string) // 定义一个用于过滤特殊字符的函数,目的是转义可能用于注入的特殊符号 {$string preg_replace(/. preg_quote(\\) ./, "\\\\\\", $string); // 转义…

基于Eureka和restTemple的负载均衡

在微服务架构中,基于 Eureka(服务注册中心)和 RestTemplate(HTTP 客户端)实现负载均衡是常见的方案,核心是通过 Eureka 获取服务实例列表,再结合负载均衡策略选择具体服务实例进行调用。以下是详…

子线程不能直接 new Handler(),而主线程可以

在 Android 中,子线程不能直接 new Handler(),而主线程可以,原因在于 Looper 机制。下面详细解释:1. 为什么主线程可以直接 new Handler()? 主线程(UI 线程)在启动时,系统会自动调用…

Android无需授权直接访问Android/data目录漏洞

从android11开始,访问/sdcard/Android/data目录需要URI授权,而从更高的版本开始甚至URI权限也被收回,返回“无法使用此文件夹”的提示,这里提供一种方法,可以越权强制访问data目录,当然也包括obb、media等目…

本地部署 Kimi K2 全指南(llama.cpp、vLLM、Docker 三法)

Kimi K2 是 Moonshot AI 于2025年7月11日发布的高性能多专家语言模型(MoE),支持最大 128K 上下文,激活参数规模为 32B,具备极强的推理、代码生成与多轮对话能力。自从其权重以多种格式开源以来,许多开发者希…

使用python的pillow模块将图片转化为灰度图和相关的操作

使用python的pillow模块可以将图片转化为灰度图, 可以获取灰度图的特定点值,区域值, 修改值并保存到图片 图片转换为灰度图 from PIL import Image# 打开图片 image Image.open("d://python//2//1.jpg")gray_image image.convert…

【网络安全】大型语言模型(LLMs)及其应用的红队演练指南

未经许可,不得转载。 文章目录 什么是红队演练? 为什么 RAI 红队演练是一项重要实践? 如何开展和规划 LLM 的红队演练 1.测试前的准备 规划:由谁负责测试 规划:测试内容 规划:测试方式 规划:数据记录方式 2.测试过程中 3.每轮测试后 报告数据 区分“识别”与“测量” 本…

ROS2安装ros-humble-usb-cam 404错误导致失败的解决方法

ROS2安装ros-humble-usb-cam遇到404错误导致安装失败,如图:解决方法: 备份 sources.list sudo cp /etc/apt/sources.list.d/ros2.list /etc/apt/sources.list.d/ros2.list.bak替换为清华源 sudo sed -i s|http://packages.ros.org/ros2/ubunt…

OllyDbg技巧学习

1 尝试在反汇编代码中找到一个函数的二进制代码 有的时候需要一个函数的二进制代码,注入到另外的一些地方;以此程序为示例, 八叉树的C实现与原理解析-CSDN博客 Ollydbg打开可执行文件,我想先找到此函数的二进制代码体&#xff0…

数据分析智能体:让AI成为你的数据科学家

数据分析智能体:让AI成为你的数据科学家 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&#xff0c…

K8s与Helm实战:从入门到精通

Kubernetes 简介 Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。最初由 Google 设计并捐赠给云原生计算基金会(CNCF),现已成为容器编排领域的事实标准。 核心功能 自动化容器部署:支持声明式配置和自动化部署,减少人工干预。…

根据ARM手册,分析ARM架构中,原子操作的软硬件实现的底层原理

目录 1.问题背景: 2.原子操作 2.1 硬件操作 2.1.1 LDREX/LDXR指令 2.1.2 STREX/STXR指令 2.2 软件操作 2.3 软件硬件操作的各性能对比 3.总结 1.问题背景: 我们知道,RTOS的任务调度算法是抢占式优先级调度算法。 既然是抢占了&…

iOS 抓包工具选择与配置指南 从零基础到高效调试的完整流程

iOS 抓包:复杂网络调试的必要技能 随着移动端应用越来越依赖网络交互,iOS 抓包作为核心调试工具之一,变得尤为重要。无论是调试 App 与后端的接口通信、排查 HTTPS 请求加密问题,还是定位网络连接超时、请求异常,抓包都…

Java使用FastExcel实现Excel文件导入

依赖配置 (Maven pom.xml)<dependencies><!-- FastExcel 核心库 --><dependency><groupId>cn.idev.excel</groupId><artifactId>fastexcel</artifactId><version>1.0.0</version></dependency><!-- Apache POI…

【60】MFC入门到精通——运行后 button按键上不显示 按键名, 控件上的文字不显示

文章目录运行后&#xff0c;button按键上不显示 “Test”原因是属性&#xff0c;图标–>True&#xff0c;改为False就好了。

抖音回应:没有自建外卖,就是在团购的基础上增加的配送功能

今年以来&#xff0c;外卖行业竞争愈加激烈&#xff0c;市场格局风云变幻。在这一背景下&#xff0c;外卖行业动向备受关注。近日&#xff0c;针对抖音上线团购版外卖的消息引发公众关注。为此&#xff0c;大公科技以商家身份咨询了抖店客服&#xff0c;对方回应称&#xff0c;…

中间件安全攻防全解:从Tomcat到Weblogic反序列化漏洞介绍

本文仅用于技术研究&#xff0c;禁止用于非法用途。 Author:枷锁 文章目录什么是中间件中间件漏洞(1) Tomcat(2) Weblogic(3) JBoss漏洞什么是中间件 中间件&#xff08;Middleware&#xff09;是指一种软件组件&#xff0c;其作用是在不同的系统、应用程序或服务之间传递数据…

现代前端开发流程:CI/CD与自动化部署实战

目录 引言现代前端开发面临的挑战CI/CD基础概念前端CI/CD流程设计实战案例&#xff1a;构建前端CI/CD管道自动化部署策略监控与回滚机制最佳实践与优化建议总结 引言 随着前端技术的飞速发展&#xff0c;现代Web应用变得越来越复杂。前端项目不再只是简单的HTML、CSS和JavaS…

MySQL EXPLAIN深度解析:优化SQL性能的核心利器

MySQL EXPLAIN深度解析&#xff1a;优化SQL性能的核心利器 引言&#xff1a;数据库性能优化的关键 在数据库应用开发中&#xff0c;SQL查询性能往往是系统瓶颈的关键所在。当面对慢查询问题时&#xff0c;EXPLAIN命令就像数据库工程师的X光机&#xff0c;能够透视SQL语句的执行…

Sentinel配置Nacos持久化

前言&#xff1a; Sentinel在使用控制台时进行配置是纯内存操作&#xff0c;并没有提供默认的持久化措施&#xff0c;一旦服务重启会导致配置的流控、熔断等策略失效。Sentinel官方提供了多种持久化方式如&#xff1a;Redis、Zookeeper、Etcd、Nacos以及其他方式等。此文以Naco…