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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本节书摘来自华章出版社《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
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
SQL 关系型数据库 MySQL
mysql用户权限设置
mysql用户权限设置
|
28天前
|
网络协议 关系型数据库 MySQL
mysql8.0远程连接权限设置
mysql8.0远程连接权限设置
55 0
|
1月前
|
SQL 缓存 关系型数据库
Mysql第十四天,Mysql并发参数调整
Mysql第十四天,Mysql并发参数调整
29 0
|
2月前
|
关系型数据库 MySQL 数据库
MySQL时间字段设置自动更新
MySQL时间字段设置自动更新
27 0
|
3月前
|
SQL 关系型数据库 MySQL
mysql使用default给列设置默认值的问题
mysql使用default给列设置默认值的问题
34 0
|
3月前
|
SQL 关系型数据库 MySQL
在云数据仓库AnalyticDB MySQL版中,有几个参数可能影响SELECT查询的执行及其稳定性
在云数据仓库AnalyticDB MySQL版中,有几个参数可能影响SELECT查询的执行及其稳定性【1月更文挑战第16天】【1月更文挑战第80篇】
290 4
|
3月前
|
关系型数据库 MySQL 数据库
百度搜索:蓝易云【【Docker】Docker部署Mysql并设置数据持久化教程】
通过以上步骤,您已经成功地在Docker中部署了MySQL,并设置了数据持久化,确保数据在容器重新启动或迁移时得以保留。
50 0
|
3月前
|
关系型数据库 MySQL API
|
3月前
|
存储 关系型数据库 MySQL
RDS有哪些参数?都有什么作用?
RDS有哪些参数?都有什么作用?
47 0
|
4月前
|
缓存 关系型数据库 MySQL
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
47 0