1、原子性。在一个事务中包含多个操作时,要么都执行,要么都不执行。
2、一致性。从一个状态到另一个状态的一致性。
3、 持久性。就是写到数据库中。提交后的状态。
这几个就不怎么多说,说多了也没用,我还是说点与编程有关系的隔离性。
4. 隔离性(Isolation)
4.1 脏读:就是读到了别人还没有提交的数据。比如我在修改数据,数据库中修改了,目前还没有提交,正在这个时候你读了这个数据,但是由于网络原因,我提交失败,所有你读 的数据就是脏数据。
4.2 不可重复读:在同一个事务中,对同一个数据读取的结果不一致。比如我在修改数据之前你就要读取这个数据,但是我修改提交了,你再读取这个数据就有可能不一样。
4.3 幻读:在同一事务中,对同一个数据查询多次返回的结果不一致。比如我在新增或删除记录的时候,你读取了该记录,但是我提交了,你再次读取该记录发现结果不一样。
重点:不可重复读和幻读区别。
对于隔离级别:
1、Read Uncommitted:最低的隔离级别。一个事务可以读取另一个事务没有提交的更新结果。什么都没有解决。
2、Read Committed:一个事务的更新操作只有在提交了之后,才会被另一个事务读取到同一笔数据更新后的结果。 解决了脏读。
3、Repeatable Read:在整个事务中,对同一笔数据的读取结果是相同的,不管其他事务是否同时在对这笔数据进行更新,也不管这笔更新是否提交。解决了脏读和不可重复读。
4、Serilizable:所有的事务操作都必须串行操作。这种隔离级别最高,但是牺牲了系统的并发性。通常会使用其他的隔离级别加上相应的并发锁机制来控制对数据的访问。解决了所有。
总结:先把概念抛出来,后面还会有java代码更进。让我们一起体验这学习的美好过程。