前言:事物:一组原子性的SQL查询,或多个SQL语句组成了一个独立的单元。要么这一组SQL语句全部执行,要么全部不执行
(一)事物日志介绍:管理事物机制的日志
redo日志:记录SQL执行的语句,这些SQL语句还没有同步到磁盘上,没有修改数据。如果数据奔溃,可以通过撤销SQL执行的语句来进行还原。但是,如果已经同步到磁盘上的SQL语句而言,就只能使用undo来回滚之前的数据了
undo日志:记录没有执行SQL的样子,也就是记录修改数据之前的数据记录下来
(二)ACID测试:用来判断存储引擎是否满足事物机制
A:automicity, 原子性,整个事物中的所有操作要么全部成功提交,要么全部失败回滚
C:consistency , 一致性,数据库总是从一个一致性状态转化为另一个一致性状态
I:isolation, 隔离性,事物不会相互影响,一个事物所作出的操作在提交之前,是不能为其他事物所见,隔离有多种级别,主要是为了并发
D:durability , 持久性,事物一旦提交,其所作的修改会保存在数据库中,不能丢失
1:show global variables where Variable_name like '%commit%'; 查看全局变量
2:set session autocommit = OFF; 修改事务日志自动提交功能
3:show variables where Variable_name like ‘%commit%’; 查看当前会话的全局变量
4:start transaction; 启用事务日志机制
5:在表中插入数据,但是不提交(commit)
6:rollback; 事务回滚
1:insert into home values (4, 'yhy1', 99); 添加一条记录
2:savepoint first; 设置一个保存点
3:update home set name = 'yhy2' where id = 4; 跟新一条记录
4:savepoint second; 设置第二个保持点
5:insert into home values (5, 'yhy3', 199); 再添加一条记录
6:rollback to second; 回滚到第二个保存点
7:rollback to first; 回顾到第一个保持点
8:commit; 提交数据