目录
提及到的mysql日志有binlog、redolog、undo log,下面就一一开始介绍了
1、binlog
1)是什么
又叫二进制日志,是一种逻辑日志,保存了某行做了什么操作,记录了具体的sql
2)作用
可以用来做主从复制,还可以做基于某个时间点的数据还原
数据还原是怎么做的呢?
先找到这个时间点最近的一次全量备份,然后还原到临时表,然后找到这个时间的binlog日志,取出这个点的binlog日志进行还原
2、redolog
1)是什么
又叫重做日志。是物理日志,记录了页做了什么操作。是innodb特有的日志。
2)作用
用于mysql突然断电的恢复、系统崩溃的数据恢复
3、undolog
1)是什么
又叫回滚日志。是一种事务日志。
2)作用
保留了事务发生前的数据的一个版本。
4、事务
1)事务的隔离级别
说到事务,首先要说说它的4中隔离级别。
比如事务A和B同时操作参数c,c初始值为100
①读未提交
存在2个事务事务A跟B,事务A读到了事务B还没有提交的值。
过程:事务B将c减去了100,c就变成了0,但是事务B还没提交,但是事务A这个时候读取c就是0
②读已提交
事务A只能读到事务B提交后的值
过程:事务B将c减去了100,c就变成了0,事务B还没提交,事务A读取的c还是100。
等事务B提交后,事务A读取的c就变成了0
③可重复读
事务A在自己提交事务后才能知道B提交的值。
过程:事务B将c减去了100,c就变成了0,事务B还没提交,事务A读取的c还是100。
等事务B提交后,事务A读取的c还是100
事务A自己提交事务后,读取的c就变成了0
④串行化
对于同一行操作,读会加读锁,写会加写锁。当读写冲突时,只有当B执行完,才能轮到事务A