【数据库】事务的特点和隔离级别
1.事务的四大特性
- 原子性
事务是一个整体,不可分割。要么全部成功,要么全部失败。 - 持久性
当数据提交或者回滚后,数据库会持久化保存数据。 - 隔离性
多个事务之间隔离,相互独立。 - 一致性
事务执行前后,数据总量应保持不变。
2.什么是脏读、不可重复读、幻读
- 脏读
读到了一个事务未提交的数据。 - 不可重复读
在一个事物中连续两次(多次)读取,读到的数据不一样(两次读取中间有其他事务改变了数据)。 - 幻读
在一个事务A执行DML语句时,另一个事务B也执行了DML语句,B修改了A修改过的数据,导致A查询数据时不能正确显示A修改过的数据,读到的数据就好像看见幻觉一样。
3.事物的隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交 : read uncommitted | √ | √ | √ |
读已提交 : read committed | × | √ | √ |
可重复读 : repeatable read(MySQL默认) | × | × | 可能 |
串行化 : serializable | × | × | × |
4.事物隔离级别的查看和设置
- 查看当前数据库的隔离级别
select @@tx_isolation; - 设置当前数据库的隔离级别
set global transaction isolation level 级别字符串;