一、Spring-其他
1.1 事务
- 原子性:一个事务就是一个不可再分解的单位,事务中的操作要么全部做,要么全部不做。原子性强调的是事务的整体;
- 一致性:事务执行后,所有的数据都应该保持一致状态。一致性强调的是数据的完整;
- 隔离性:多个数据库操作并发执行时,一个请求的事务操作不能被其它操作干扰,多个并发事务执行之间要相互隔离。隔离性强调的是并发的隔离;
- 持久性:事务执行完成后,它对数据的影响是永久性的。持久性强调的是操作的结果。
事务并发操作:
- 脏读:一个事务读到了另一个事务没有提交的数据;
- 不可重复读:一个事务读到了另一个事务已提交修改的数据,对同一行数据查询两次,结果不一致;
- 幻读:一个事务读到了另一个事务已提交新增的数据,对同一张表查询两次,出现新增的行,导致结果不一致。
事务的隔离级别:
- read uncommitted 读未提交 —— 不解决任何问题;
- read committed 读已提交 —— 解决脏读;
- repeatable read 可重复读 —— 解决脏读、不可重复读;
- serializable 可串行化 —— 解决脏读、不可重复读、幻读。
四种隔离级别,自上而下级别逐级增高,但并发性能逐级降低。MySQL中默认的事务隔离级别是repeatable read,Oracle、PostgresSQL的默认事务隔离级别是read committed。