一、事务的定义
事务是由一系列对系统中数据进行访问与更新的操作所组成的一个程序的执行逻辑单元。
二、事务的ACID特性
1.原子性(Atomicity) : 事务所包含的所有操作只允许出现以下状态,要么全部执行成功,要么全部不执行。
2.一致性(Consistency): 一个事务在执行之前和执行之后数据库都必须处于一致性状态。
3.隔离性(Isolation): 多个事务并发执行是相互隔离的,一个事务的执行不能被其他事务影响。
4.持久性(Durability): 一个事务一旦提交,对数据库中数据的修改就是永久的。
三、多事务并发问题
多个事务并发执行会出现以下问题
1.脏读:一个事务读取到了另一个事务的中间状态。
2.不可重读读:一个事务读取到了另个一个事务已提交的值,侧重修改。
3.幻读:一个事务读取到了另一个事务已提交的新插入的值,侧重新增删除。
四、事务的隔离级别
1.Read Uncommitted(读未提交数据):会出现脏读情况。
2.Read Commited(读已提交数据):解决了脏读问题,会出现不可重复读问题。
3.Repeatable Read(可重复读):解决了不可重复读问题,会出现幻读问题。
4.Serializable(串行化)
五、MySQL
1.MySQL 查看数据库隔离级别
select @@tx_isolation;
2. MySQL设置数据库隔离级别
set session transaction isolation level read uncommitted;