1.事务
1.1 含义
一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行
1.2 特点(ACID)
- 原子性:不可分割的操作单元,事务中所有操作,要么全部成功;要么撤回到执行事务之前的状态
- 一致性:一个事务的执行不能破坏数据库数据的完整性和一致性,如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的
- 隔离性:一个事务不受其它事务的干扰,多个事务是互相隔离的,事务操作之间彼此独立和透明互不影响。事务独立运行。这通常使用锁来实现。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度
- 持久性:一个事务一旦提交了,则永久的持久化到本地,其结果就是永久的。即便发生系统故障,也能恢复
1.3 分类
- 隐式事务:没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete
- 显式事务:具有明显的开启和结束,例如以下格式:
1、开启事务
set autocommit=0;#关闭自动提交
start transaction;#开启事务机制
2、编写一组逻辑sql语句
注意:sql语句支持的是insert、update、delete
【设置回滚点,可选项】
savepoint 回滚点名;
3、结束事务
提交:commit;
回滚:rollback;
回滚到指定的地方: rollback to 回滚点名;
2. 事务并发(读问题)
2.1 事务的并发问题如何发生?
多个事务同时操作同一个数据库的相同数据时
2.2 事务的并发问题都有哪些
- 脏读: