ACID事务: Atomic 原子性:所有语句作为一个单位全部成功执行或全部取消 Consistent一致性:如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一致状态 例子:比如转账你100,转给我之后,我俩的总和不变 Isolated隔离性:事务之间不相互影响 例子:我在更新一个数据的时候,保证别人不能对它更改 Durable持久性:所有更改不会丢失


innodb存储引擎---事务SQL控制语句 事务语句包含DML(insert update delete)3种语句

事务的生命周期: start transaction(或begin):显示开始一个新事务 //开头可以不用写,只要遇到insert/update/delete就开始从1计算了 1 2 3 commit //永久记录当前事务所做的更改

begin //begin这个开头可以不写 1 2 3 rollback //取消当前事务所做的更改

SET AUTOCOMMIT=0 //临时关闭自动提交,一般需要关闭了,不然事务功能没法展现 show variables like '%auto%'; show global variables like '%auto%'; //全局查看

永久更改 vim /etc/my.cnf [mysqld] AUTOCOMMIT=0

隐式提交:DDL DCL语句,比如alter create drop grant等都会让事务隐式提交


①innodb存储引擎---事务日志redo ACID中的D,持久性 ②redo“重做日志”,是事务日志的一种 修改--->mysql数据(内存)--->redo buffer(内存)--->redo log(磁盘)--->mysql数据(磁盘) 注:redo重做日志,可以避免MySQL数据在内存修改后,还没来得及提交给磁盘时,内存突然故障后,可以根据磁盘中redolog日志来进行恢复 ③innodb存储引擎---事务日志undo:用于数据的回滚 ACID中的A和C ④innodb存储引擎---锁 ACID中的I,隔离性 show variables like '%isol%'; repeatable read***** innodb的默认隔离级别,确保每个事务的select输出一致