十九、InnoDB核心参数
default_storage_engine=innodb
存储引擎设置参数
innodb_file_per_table=1
默认独立表空间模式
innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
共享表空间文件个数跟大小配置
innodb_flush_log_at_trx_commit=1
控制redo刷写方式的参数
"双一"标准其中之一,默认为1
参数为1时,表示控制redo在事务提交时将数据从mysql使用的内存中立即写入到os buffer内存再刷写到硬盘上
参数为0时,表示redo按每秒将数据写入os buffer内存,然后再将事务刷写到硬盘上,追求性能时使用,但如果宕机会丢失一秒内的数据
参数为2时,表示redo在事务提交时立即写入os buffer内存,然后按每秒将事务刷写到硬盘上
innodb_flush_method=FSYNC
作用:控制redo buffer跟buffer pool的刷写策略
默认FSYNC模式,数据都会先刷写到os buffer再写入硬盘
O_DIRECT模式(建议使用,数据直接写入硬盘会较安全),buffer pool直接将数据写入硬盘,redo不变
O_DSYNC模式写入方式如下
最高安全模式
innodb_flush_log_at_trx_commit=1
Innodb_flush_method=O_DIRECT
最高性能模式,可能会丢数据
innodb_flush_log_at_trx_commit=0
Innodb_flush_method=fsync
redo日志设置参数
innodb_log_buffer_size=16777216 #日志缓冲区大小
innodb_log_file_size=50331648 #日志文件大小,默认50m
innodb_log_files_in_group = 3 #redo日志文件个数,默认2个
innodb_max_dirty_pages_pct=75
脏页刷写策略参数
控制脏页内存大小比例,如脏页占用内存75%时会触发写入到硬盘,调小会更快的将数据写入到硬盘
当redo两个日志文件满了,也会立即将脏页写入到硬盘从而刷新redo空间
CSR(前滚故障恢复),mysql断电后重启对照LSN号通过读取redo日志内容重建buffer pool再将脏页写入硬盘
学习来自:老男孩深标DBA课程 第五章 存储引擎-2