《MySQL DBA修炼之道》——2.6 MySQL的主要参数设置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第2章,第2.6节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。MySQL的主要参数设置 研发、测试人员往往熟悉SQL语句的撰写、表结构的设计,而不熟悉MySQL的配置,这可能会导致一些困惑,比较常见的是,在线上运行良好的查询,到了线下就变慢了,下面介绍几个常见的参数配置。

本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第2章,第2.6节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.6 MySQL的主要参数设置

研发、测试人员往往熟悉SQL语句的撰写、表结构的设计,而不熟悉MySQL的配置,这可能会导致一些困惑,比较常见的是,在线上运行良好的查询,到了线下就变慢了,下面介绍几个常见的参数配置。一般情况下,配置好这几个参数可以满足大部分开发环境和测试环境的要求。
(1)innodb_buffer_pool_size
为了提升写性能,可以把要写的数据先在缓冲区(buffer)里合并,然后再发送给下一级存储。这样做可提高I/O操作的效率。InnoDB Buffer Pool就是InnoDB用来缓存它的数据和索引的内存缓冲区,可由innodb_buffer_pool_size设置其大小。理论上,将这个值设置得越高,访问数据需要的磁盘I/O就越少。常见的做法是让这个值大于热点数据,这样可以获得比较好的性能。如果不清楚环境的数据量和访问模式,建议将其设置为机器物理内存大小的70%~80%。
(2)innodb_log_file_size
日志组里每个日志文件的大小。在32位计算机上日志文件的合并大小必须小于4GB,默认大小是5MB,在生产环境下,这个值太小了。官方文档推荐的值为从1MB到1/N的缓冲池大小,其中N是日志组里日志文件的数目(由innodb_log_files_in_group变量来确定,一般默认为2)。值越大,在缓冲池中需要检查点刷新的行为就越少,因此也越节约磁盘I/O,但更大的日志文件也意味着在崩溃时恢复得更慢。建议将日志文件的大小设置为256MB或更大,这样可以满足一般情况下的需要。
(3)innodb_flush_log_at_trx_commit,建议设置为2
这个选项的默认值是1。当设置为2时,在每个事务提交时,日志缓冲被写到文件中,但不对日志文件做刷新到磁盘的操作。对日志文件的刷新每秒才发生一次。所以,理论上,操作系统崩溃或掉电只会丢失最后一秒的事务。
(4)sync_binlog,建议设置为0
如果是autocommit模式,那么每执行一个语句就会向二进制日志写入一次,否则每个事务写入一次。如果sync_binlog的值为正,那么每当sync_binlog参数设定的语句或事务数被写入二进制日志后,MySQL服务器就会将它的二进制日志同步到硬盘上。默认值是0,不与硬盘同步。值为1是最安全的选择,因为崩溃时,你最多丢掉二进制日志中的一个语句或事务。但是,这也是最慢的选择,成本昂贵。
另外,在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写则不敏感。我们应设置变量lower_case_table_names=0,这也是Unix/Linux系统的默认值。开发环境、测试环境的MySQL也建议部署在Unix/Linux平台,尽可能和生产环境一致。


6ebdeb80bbe187f13b5a95d873672acc90359ad6
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
存储 缓存 监控
MySQL服务器配置优化:my.cnf参数调优指南
本文深入解析了MySQL核心配置参数及性能优化技巧,涵盖内存结构、调优原则、存储引擎优化、查询性能优化等内容,通过实战案例帮助读者构建高性能MySQL服务器配置,解决常见的性能瓶颈问题。
|
2月前
|
NoSQL 关系型数据库 MySQL
在Visual Studio Code中设置MySQL源码调试环境
以上步骤涵盖了在VS Code中设置MySQL源码调试环境的主要过程,是一个相对高级的任务,旨在为希望建立强大开发和调试环境的开发者提供指引。遵循这些步骤,将可以利用VS Code强大的编辑和调试功能来深入理解和改进MySQL数据库的底层实现。
253 0
|
5月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
127 18
|
10月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
11月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的参数文件
MySQL启动时会读取配置文件my.cnf来确定数据库文件位置及初始化参数。该文件分为Server和Client两部分,包含动态与静态参数。动态参数可在运行中通过命令修改,而静态参数需修改my.cnf并重启服务生效。文中还提供了相关代码示例和视频教程。
261 6
|
11月前
|
关系型数据库 MySQL 数据库
MySQL事务隔离级别及默认隔离级别的设置
在数据库系统中,事务隔离级别是一个关键的概念,它决定了事务在并发执行时如何相互隔离。MySQL提供了四种事务隔离级别,每种级别都解决了不同的并发问题。本文将详细介绍这些隔离级别以及MySQL的默认隔离级别。
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
1485 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
11月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
617 3
|
11月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
872 2
|
11月前
|
缓存 监控 关系型数据库
如何根据监控结果调整 MySQL 数据库的参数以提高性能?
【10月更文挑战第28天】根据MySQL数据库的监控结果来调整参数以提高性能,需要综合考虑多个方面的因素
320 1

推荐镜像

更多