重点–事务
1. 含义
- 事务 : 一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行
2. 特点
- 原子性 : 一个事务是不可再分割的整体,要么都执行要么都不执行
- 一致性: 一个事务可以使数据从一个一致状态切换到另外一个一致状态
- 隔离性 : 一个事务不受其他事务的干扰,多个事务互相隔离
- 持久性 : 一个事务一旦提交了,则永久的持久化到本地
3. 事务的使用步骤
-
了解
-
隐式(自动)事务:没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete
-
显式事务:具有明显的开启和结束
-
使用显式事务:
-
开启事务
```mysql
set autocommit = 0;
start transaction ; #可以省略
```
-
编写一组逻辑sql语句
- sql 语句支持的是insert,update,delete
- 在代码中,这里要指明下,,不然select也成了事务
-
设置回滚点
savepoint 回滚点名
-
结束事务
- 提交 commit
- 回滚 rollback
- 回滚到指定的地方 : rollback to 回滚点名
-
并发事务
-
事务的并发的问题的产生:
- 多个事务 同时操作同一个数据库的相同数据时
-
并发问题都有哪些
-
脏读 :
- 一个事务 读取了其他事务还没有提交的数据 ,读到的是其他的事务"更新"的数据
-
不可重复读:
- 一个事务多次读取,结果不一样
-
幻读
- 一个事务读取了其他事务还没有提交的数据,只是读到的是 其他事务 “插入”的数据
-
-
如果解决并发问题
- 通过设置隔离级别来解决并发问题
-
隔离级别
脏读 不可重复读 幻读 read uncommitted:读未提交 × × × read committed: 读已提交 √ × × repeatable read:可重复读 √ √ × serializable:串行化 √ √ √
-