文章目录

  • 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、建议设置

  1. 设置该值大于热点数据的size,这样可以获得比较好的性能。
  2. 如果不清楚环境的数据量和访问模式,无法评估热点数据的大小,则可将其设置为机器物理内存大小的70%~80%。

1.2、innodb_log_file_size

1.2.1、参数含义

  1. innodb_log_file_size代表的是重做日志(即事务日志)的日志组里每个日志文件的大小。
  2. 这个参数值越大,在缓冲池中需要检查点刷新的行为就越少,因此也越节约磁盘I/O,但更大的日志文件也意味着在崩溃时恢复得更慢。
  3. 重做日志的日志组的数量N由innodb_log_files_in_group变量来确定,一般默认为2。
  4. 默认大小是5MB,这个值在生产环境下就太小了。

1.2.2、建议设置

  1. 将日志文件的大小设置为256MB或更大,这样可以满足一般情况下的需要。

1.3、innodb_flush_log_at_trx_commit

参考文档

1.3.1、参数含义

  1. 这个参数是 InnoDB 引擎特有的,代表重做日志(即事务日志,ib_logfile)向刷新方式。
  2. 重做日志向磁盘写入一般分为两步,第一步是将处于内存的日志缓冲刷到文件系统(OS Buffer)中,第二步是调用文件系统的FLUSH操作将OS Buffer中的数据刷到磁盘上。innodb_flush_log_at_trx_commit的三个值正是在这两步上不一样。
  3. innodb_flush_log_at_trx_commit共有0/1/2三个参数值,区别如下:

1.3.2、建议设置

  1. 推荐设置2,因为可以兼顾效率和安全。设置为2比设置为0更安全,因为最多丢失1秒的事务日志。设置为2比设置为1效率更高,因为不需要每次事务都写磁盘。
  2. 对于高安全性的数据,在能够满足I/O性能的前提下,可以设置为1。

1.4、sync_binlog

1.4.1、参数含义

  1. sync_binlog代表二进制日志的刷写方式。
  2. 如果sync_binlog的值为正,那么每当二进制日志中的语句或事务数达到sync_binlog参数时,MySQL服务器就会将二进制日志刷写到硬盘。
  3. 默认值是0,不向磁盘刷写。
  4. 值为1是最安全的选择,因为崩溃时最多丢掉二进制日志中的一个语句或事务。但这也是最慢的选择,成本昂贵。

1.4.2、建议设置

  1. 建议配置范围为8~20。0不安全,1太慢。