mysql事务_34
redo组成
redo log buffer
--innodb_log_buffer
通畅8M已经足够使用
redo log file
--innodb_log_file_size
--innodb_log_files_in_group
--innodb_log_group_home_dir
和数据文件分开
选择更快的磁盘
redo llog buffer
由log block 组成
每个log block 512kB
no need doublewrite
redo log buffer刷新
master thread 每秒进行刷新
redo log buffer使用大于1/2进行刷新
事务提交时进行刷新
innodb_flush_log_at_trx_commit = 0 1 2
顺序写
ib_logfile1写满 重新写ib_logfile0 没有归档
innodb_flush_log_at_trx_commit = 0:事务提交时不将redo log buffer写入磁盘 最多丢失1秒的事务
1 提交时将redo log buffer写入磁盘
2 事务提交时仅将redo log buffer写入操作系统缓存
哪种性能最好?
inndb_flush_log_at_trx_commit=2是否会导致事务丢失?
innodb_flush_log_at_timeout(5.6才有的参数)master thread 秒N秒进行刷新
组提交:
一次fsync刷新多个事务
性能提高10~100多倍
sysbench update_non_index.lua
开启binlog后组提交失败
mariadb5.5解决
mysql5.6解决
写入密集型应用
mysql5.5raid bbu
不在乎数据一致性可考虑innodb_flush_log_at_trx=2
redo日志分类
物理日志:记录整个页的变化(diff)
逻辑日志:like sql语句
物理逻辑日志:根据页进行记录,内容逻辑
doublewrite与redo的关系
redo 与binlog的区别
show master status
show binlog events in '';
flush binary logs/flush logs
query类型的event 就是ddl
5.7 binlog设置row格式 可以看到sql语句,怎么看?