一、事务的概念:一组不可被分割执行的SQL语句集合。
数据库区分于文件系统的重要特征之一。
二、事务的基本原理及作用:
1、开启事务的本质是——关闭了自动提交的功能,改为commit手动提交。
自动提交的特征——保存在服务的一个autocommit的变量里,可修改。
设置自动提交模式:set autocommit=0;
2、如果不开启事务,只执行一条sql语句,马上就会持久化数据。即:普通执行就是立即提交,提交就会将结果持久化。
原因—— MySQL默认对sql语句的执行是自动提交。
每条sql语句都是同一事务的不同命令,之间由commit或rollback隔开。掉线后,无commit的事务都被放弃。
3、注意:事务类似于外键约束,纸杯InnoDB引擎支持。
三、事务的四大特性(“ACID”原则)
1. 原子性(Atomicity)
事务的操作要么完全成功,要么就回滚。只有事务中所有的数据库操作都执行成功,才能算整个事务成功。对数据库要么就是完全正确的数据,要么就不记录任何数据。
2. 一致性(Consistency)
事务发生前后,数据库只能从一致性的一个状态,转换为另一个一致性的状态。
在事务开始之前和结束之后,数据库的完整性约束没有被破坏。
3. 隔离性(Isolation)
多个事务并发操作时,事务之间不会相互影响。
每一个读写事务的对象对其他事务的操作对象相互分离。
即该事物提交之前,对其他事务都不可见(实现方法:锁)
4. 持久性(Durability)
一旦事务提交,数据就会持久化在数据库中,不可能再被回滚的。(执行成功后必须全部写入磁盘)