原子性:事务不可分割
一致性:事务执行前后数据完整性保持一致
隔离性:一个事务的执行不应该受到其他事务的干扰
持久性:一旦事务结束,数据就持久到数据库
如果不考虑隔离性引发安全性问题
- 读问题
- 脏读:读到另一个事务未提交额数据
- 不可重复读:一个事务读取到另一个事务已经提交的update的数据,导致一个事务多次查询不一致问题
- 虚读、幻读:一个事务读取到另一个事务已经提交的insert的数据,导致一个事务多次查询不一致问题
- 写问题
- 丢失更新
设置隔离级别
read uccommitted:未提交读,任何问题都解决不了 四种读问题全会发生
read committed:已提交读,解决脏读;但是解决不了不可重复读和虚读
repeatable read:重复读,可以解决脏读和重复读;
Serializable:序列号,解决所有读的问题,效率低;