一、redo log
- redo log是InnoDB引擎特有的日志
- 在通常情况下,我们避免不了对表进行更新的操作,我们需要把更新的操作写进磁盘,然后磁盘找到对应的那条记录再进行更新,整个过程的IO成本、查找成本都很高。
- 如果在系统特别忙的时候去做这种更新,这无疑是让人非常崩溃的。
- 为了不让人崩溃,MYSQL提供了一种WAL【Write-Ahead-Logging】技术,它的关键点就是先写日志,再写磁盘。
- 具体来说就是,当有一条记录需要更新的时候,InnoDB存储引擎就会先把记录写到redo log中,并更新内存。然后,InnoDB存储引擎会在系统比较空闲的时候将这个操作记录更新到磁盘中。
- InnoDB的redo log是固定大小的,有了redo log,InnoDB就可以保证技术数据库发生异常重启,之前提交的记录都不会丢失。
二、binlog
- binlog是MYSQL的server层实现的,所有的引擎都可以使用
三、redo log和binlog的不同
- redo log是InnoDB引擎特有的;binlog是MYSQL的server层实现的,所有引擎都可以使用
- redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑
- redo log日志是循环写的,空间固定会用完;binlog是可以追加写入的
这块内容后面遇到了再做补充
🤣🤣🤣