ACID
-
Atomic同一个事务里,要么都提交,要么都回滚
-
Consistency即在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏
-
Isolation 并发事务间的数据是彼此隔离的
-
Durabiliy 事务提交后,所有结果务必被持久化
支持事务:InnoDB,NDBCluster, TokuDB
不支持事务:MyISAM,MEMORY
-
隔离性通过锁实现
-
原子性,一致性,持久性通过数据库的redo和undo来完成
撤销日志: UNDO LOG (现在正在活跃的事务,但还没有提交,或者还没有完成check point)
重做日志:REDO LOG (已经提交的事务)
REDO 和 UNDO 在做数据库恢复的时候的作用是相反的,
RODO:在做数据库恢复的时候,如果有事务还没有真正的提交,那么需要前滚(扫描RODO LOG检查哪些事务已经提交了,但还没有持久化到数据文件【table spacs, data table spage】里的,再把这些重做一次事务【再重新提交一次】)
UNDO: 正好是相反 找到还没有提交的事务 但是再undo log里需要进行一次回滚,就是把已经提交的事务回滚掉
在做数据库恢复的时候要做这样的一个过程
autocommit = 0|1
设置事务自动 开启|关闭
显示事务 启动 | 关闭
-
以START TRANSACTION/BEGIN开始事务
-
以COMMIT/ROLLBACK TRANSACTION结束事务
隐性事务提交
主要是DDL,DCL会引发事务的隐性提交