事务
事务满足4个条件:
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
事务的隔离分为不同的级别:
读未提交、读提交、可重复读和序列化。
在事务的并发操作中可能会出现脏读,不可重复读,重复读,幻读。
读未提交:顾名思义,就是一个事务可以读取另一个未提交事务的数据(出现脏读,读提交来解决)。
读提交:顾名思义,就是一个事务要等另一个事务提交后才能读取数据(出现不可重复读(一个事务范围内两个相同的查询却返回了不同数据)重复读解决)。
重复读:就是在开始读取数据(事务开启)时,不再允许修改操作。(出现幻读问题(幻读问题对应的是插入INSERT操作,而不是UPDATE操作)序列化)
Serializable 序列化:Serializable 是最高的事务隔离级别,在该级别下,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。
值得一提的是:大多数数据库默认的事务隔离级别是Read committed,比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。