bin log与undo log的区别?
1)redo log是InnoDB引擎特有的;binlog是MySQL的Server层实现 的,所有引擎都可以使⽤。
2)redo log是物理⽇志,记录的是“在XXX数据⻚上做了XXX修改”; binlog是逻辑⽇志,记录的是原始逻辑,其记录是对应的SQL语句。
- 物理⽇志: 记录的是每⼀个page⻚中具体存储的值是多少,在这个数据 ⻚上做了什么修改. ⽐如: 某个事物将系统表空间中的第100个⻚⾯中偏 移量为1000处的那个字节的值1改为2
- 逻辑⽇志: 记录的是每⼀个page⻚⾯中具体数据是怎么变动的,它会记 录⼀个变动的过程或SQL语句的逻辑, ⽐如: 把⼀个page⻚中的⼀个数据 从1改为2,再从2改为3,逻辑⽇志就会记录1->2,2->3这个数据变化的过 程.
3)redo log是循环写的,空间⼀定会⽤完,需要write pos和check point搭配;binlog是追加写,写到⼀定⼤⼩会切换到下⼀个,并不会覆盖 以前的⽇志
Redo Log ⽂件内容是以顺序循环的⽅式写⼊⽂件,写满时则回溯到第 ⼀个⽂件,进⾏覆盖写。