1、innodb_flush_log_at_trx_commit :事务日志提交策略即提交事务的时候将 redo 日志写入磁盘中的时机。
- 等于0:等于0表示每次提交事务时将数据提交到mysql redo log buffer 中即表示操作成功,数据的落盘依靠 InnoDB 的主线程每秒执行一次刷新到磁盘。显然该模式在mysql宕机后,会丢失缓存中的数据。
- 默认值1:等于1表示每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。显然该模式最为安全,但是效率较低。
- 等于2:等于2表示先写入系统缓存(OS_cache)。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。该模式只有在操作系统宕机后才会都是数据。
2、sync_binlog:该参数控制着二进制日志写入磁盘的过程。
-
0:默认值。事务提交后,将二进制日志从缓冲写入系统缓存(OS_cache),但是不进行刷新操作(fsync()),显然该模式若操作系统宕机则会丢失部分二进制日志。
- 1:事务提交后,将二进制文件写入磁盘并立即执行刷新操作,相当于是同步写入磁盘。显然该模式对于数据的安全性更有保障,但是效率最低。
- N:每写N次操作系统缓冲就执行一次刷新操作。
将这个参数设为0或大于1以上的数值会提高数据库的性能,但同时会伴随数据丢失的风险。二进制日志文件涉及到数据的恢复,以及想在主从之间获得最大的一致性,那么应该将该参数设置为1,但同时也会造成一定的性能损耗。
3、max_connections:是指MySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySql会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。可以过‘conn%‘通配符查看当前状态的连接数量,以定夺该值的大小。MySQL服务器允许的最大连接数16384;查看mysql当前最大连接数:show variables like ‘max_connections‘;
4、innodb_buffer_pool_size:这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。为Innodb加速优化首要参数。默认128M,建议设为内存的70%-80%。
innodb_buffer_pool_size中存储的内容:
- 数据缓存:InnoDB数据页面
- 索引缓存:索引数据
- 缓冲数据:脏页(在内存中修改尚未刷新(写入)到磁盘的数据)
- 内部结构:如自适应哈希索引,行锁等。