事务
1.存储引擎
- Mysql核心存储引擎。
- Mysql5.5 默认采用innoDB。(my.ini)
2.什么是事务
- 事务用于保证数据的一致性,由一组DML操作组成,该组SQL语句要么同时成功,要么同时失败。例如转账。
3.事务的四大特性(ACID)
- 原子性: dml作为整体不可分割。
- 一致性: 事务执行前后整体的状态不变。
- 隔离性: 并发事务之间互相独立,不能相互干扰。
- 持久性: 事务执行完毕,则数据将持久化到数据库。
4.并发事务产生的问题
- 脏读: 一个事务读到另一个事务未提交的数据。
- 不可重复读: 在一个事务t1执行过程中,由另一个事务t2对该数据进行修改并且提交了事务;t1再次进行处理时发现数据已经改变。
- 幻读(虚读): 在一个事务t1的执行过程中,另一个事务t2对该数据进行增加删除操作并且提交事务;t1再次读取时发现数据不一致。
5.事务隔离级别
- 读未提交: 无法解决问题
- 读已提交: 解决脏读问题。 Oracle
- 可重复读: 解决脏读和不可重复读问题。 Mysql
- 串行化: 解决所有问题。
6.数据库中事务语法
set autocommit=0;
start TRANSACTION;
update account set money=money-100 where aid = 1;
update account set money=money+100 where aid = 2;
#commit;
rollback;