1、Innodb_flush_log_at_trx_commit:

  控制redo 往os buffer、磁盘 刷写的策略 

  (0) 每秒将redo buffer往os buffer(操作系统文件缓冲区) 刷写,每秒将os buffer同步到磁盘,如果宕机,会丢失一秒内的所有事务

    (1) 事务每次commit,立即将redo buffer刷写到os buffer,并立即刷写到磁盘,直到真正将数据同步到磁盘,事务才结束(默认)

    (2)事务每次提交立即刷写到os buffer, 而os buffer每秒将数据同步到磁盘,如果数据库宕了没事,整体宕机还是和0是一样的

2、innodb_file_per_table

  1是独立表空间,0是共享表空间,详情查看表空间文章

3、innodb_flush_method

  控制redo buffer、buffer pool刷写到磁盘的策略

  redo buffer 不管选择哪种模式,都是先刷写到os buffer,然后再同步到磁盘

   (1) FSYNC: buffer pool和redo buffer 先刷写到os buffer 、然后从os buffer 同步到磁盘,

   (2) O_DIRECT:buffer pool 略过os buffer ,直接同步到磁盘,redo buffer 还是从os buffer经过  (建议)

   (3) O_DSYNC: buffer pool刷写到os buffer 然后同步到磁盘,redo buffer 略过 os buffer 直接写到磁盘

 

 

 

 

 

 

 

 最高安全模式:

  innodb_flush_log_at_trx_commit=1

  innodb_flush_method=O_DIRECT

最高性能:

  innodb_flush_log_at_trx_commit=0

  innodb_flush_method=fsync

 

redo日志设置:

  1、innodb_log_buffer_size=16777216

    redo缓冲区大小

  2、innodb_log_file_size=50331648

    ib_logfile0、ib_logfile1的文件大小

  3、innodb_log_file_in_group=2

    设置几个ibdata文件,默认2

  4、innodb_max_dirty_pages_pct=75

    脏页达到内存75%就会自动刷写到磁盘 

    CSR机制和redo文件满了也会自动刷写磁盘