mysql日志@2

mysql更新会使用到三种日志分别是:redo log(重做日志)和binlog(归档日志)。

一、redo log

redo log的记录是在存储引擎InnoDB中进行;只有InnoDB有redo log;redo log记录物理日志,更新的sql语句;redo log在事务执行的时候不断地被写入(包括事务提交前),日志不随事务提交时间顺序写入,因此每个事务对应多条redo log日志;binlog文件时固定大小,是循环使用的,达到一定大小,会清除日志腾出空间;由于redo log的特性,其可用于数据库宕机后进行数据恢复来保证数据完整性(自动行为)
redo log提供了以下配置项。innodb_log_file_size(指定每个redo log日志文件大小);innodb_log_files_in_group(指定每个redo log日志文件组内的文件数量);设置过小redo log文件很快就会被写满,会触发脏数据刷盘,大redo log日志文件在恢复是会耗费更多地时间,不过现在SSD磁盘性能比较高,可以配置大日志文件,甚至可以配置成与缓冲区一样大;也可以考虑通过innodb_log_buffer_size(日志缓冲区大小)增加缓冲区大小,较大的日志缓冲区可以支撑更大的数据库操作事务,而无需将日志刷如磁盘,更节约磁盘IO

二、binlog

binlog会记录数据库的所有更改操作;binlog日志是由数据库服务层记录的;binlog文件的格式是二进制;binlog的内容是修改操作的逻辑日志,如”将字段a修改为3“;binglog日志是扩展写,写满一个文件就写下一个,不断写下去;binlog只有在事务提交时记录,一个事务对应一条日志,日志的顺序是事务提交的顺序;binlog日志可以用于数据恢复,主从复制搭建

三、undo log

参考:https://blog.csdn.net/chenssy/article/details/108613173?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase

猜你喜欢

转载自blog.csdn.net/feifeixiongxiong/article/details/113105592