java事务相关知识汇总二

事物的特性:ACID

原子性(Atomicity)

一个事务汲及的操作,要么全部成功执行,要么全部回滚

一致性(Consistency)

事务中相关联的数据在事务操作结束后是一致的,一切都是对的(在分布式场景下可理解为所有节点数据在事务完成后都要是正确的)。例如:银行有总金额9元,有三个用户各3元,3个用户之间无论怎么转帐,银行总额使终是9元。如果当转帐过程中出现问题,那么原子性就发挥作用了,那就不转帐,但数据的结果还是正确的。在这个转帐的过程中,一定是由一个状态变为另一个状态的,即一旦一个事务完成,将来的所有事务都必须基于这个完成后的状态

一致性分为强一致(A向B转帐B马上就可以收到),弱一致(A向B转帐不保证立即到帐,也不保证什么时候能到帐),最终一致(弱一致的特殊形式,A向B转帐,不一定立即到帐,但保证一定能到帐)

隔离性(Isolation)

也称作独立性,未完成的事务与事务之间相互不干扰不交错.例如:一个事务是A向B转帐3元,别外一个事务也是A向B转帐3元,其实在执行时它们是相互不干扰的,所以都有可能执行成功,但是由于它们可能是同时得到A 的金额3元,如果两个事务都执行成功,逻辑上就悲剧了,为了保证数据安全一般我们会加一些锁机制。此外事务的隔离级别也正是对隔离性各种表现的一种应对方案

持久性(Durabiltiy)

事务一旦提交,数据库就保证数据的存储。而且发生故障还可以恢复。也就是说:一旦一个事务完成,就是持久的

猜你喜欢

转载自my.oschina.net/u/1017791/blog/2933830