文章目录
- 1、MySQL5.7主要参数的设置
- 1.1、innodb_buf fer_pool_size
- 1.1.1、参数含义
- 1.1.2、建议设置
- 1.2、innodb_log_file_size
- 1.2.1、参数含义
- 1.2.2、建议设置
- 1.3、innodb_flush_log_at_trx_commit
- 1.3.1、参数含义
- 1.3.2、建议设置
- 1.4、sync_binlog
- 1.4.1、参数含义
- 1.4.2、建议设置
1、MySQL5.7主要参数的设置
1.1、innodb_buf fer_pool_size
1.1.1、参数含义
InnoDB Buffer Pool是InnoDB用来缓存它的数据和索引的内存缓冲区。通过把要写的数据先在缓冲区(buffer)里合并,然后再发送给下一级存储,这样做可以减少I/O操作次数,提高I/O操作效率。innodb_buffer_pool_size就是用来设置InnoDB Buffer Pool大小的。理论上,将这个值设置得越高,访问数据需要的磁盘I/O就越少。常见的做法是让这个值大于热点数据,这样可以获得比较好的性能。
1.1.2、建议设置
- 设置该值大于热点数据的size,这样可以获得比较好的性能。
- 如果不清楚环境的数据量和访问模式,无法评估热点数据的大小,则可将其设置为机器物理内存大小的70%~80%。
1.2、innodb_log_file_size
1.2.1、参数含义
- innodb_log_file_size代表的是重做日志(即事务日志)的日志组里每个日志文件的大小。
- 这个参数值越大,在缓冲池中需要检查点刷新的行为就越少,因此也越节约磁盘I/O,但更大的日志文件也意味着在崩溃时恢复得更慢。
- 重做日志的日志组的数量N由innodb_log_files_in_group变量来确定,一般默认为2。
- 默认大小是5MB,这个值在生产环境下就太小了。
1.2.2、建议设置
- 将日志文件的大小设置为256MB或更大,这样可以满足一般情况下的需要。
1.3、innodb_flush_log_at_trx_commit
参考文档
1.3.1、参数含义
- 这个参数是 InnoDB 引擎特有的,代表重做日志(即事务日志,ib_logfile)向刷新方式。
- 重做日志向磁盘写入一般分为两步,第一步是将处于内存的日志缓冲刷到文件系统(OS Buffer)中,第二步是调用文件系统的FLUSH操作将OS Buffer中的数据刷到磁盘上。innodb_flush_log_at_trx_commit的三个值正是在这两步上不一样。
- innodb_flush_log_at_trx_commit共有0/1/2三个参数值,区别如下:
1.3.2、建议设置
- 推荐设置2,因为可以兼顾效率和安全。设置为2比设置为0更安全,因为最多丢失1秒的事务日志。设置为2比设置为1效率更高,因为不需要每次事务都写磁盘。
- 对于高安全性的数据,在能够满足I/O性能的前提下,可以设置为1。
1.4、sync_binlog
1.4.1、参数含义
- sync_binlog代表二进制日志的刷写方式。
- 如果sync_binlog的值为正,那么每当二进制日志中的语句或事务数达到sync_binlog参数时,MySQL服务器就会将二进制日志刷写到硬盘。
- 默认值是0,不向磁盘刷写。
- 值为1是最安全的选择,因为崩溃时最多丢掉二进制日志中的一个语句或事务。但这也是最慢的选择,成本昂贵。
1.4.2、建议设置
- 建议配置范围为8~20。0不安全,1太慢。