- 原子性(Atomicity)
原子性要求事务包含的全部操作是一个不可分割的整体,这些操作要么全部提交成功,要么只要其中一个操作失败,就全部失败。 - 一致性(Consistency)
一致性要求事务的所包含的操作不能违反数据资源的一致性检查,数据源在事务执行之前处于某个数据一致性状态,那么,事务执行之后也依然需要保持数据间的一致性状态。 - 隔离性(Isolation)
事务的隔离性主要规定了各个事务之间互相影响的程度。隔离性概念主要面向对数据资源的并发访问(Concurrency),并兼顾影响事务的一致性。事务指定了4种隔离级别(从弱到强分别是):
①、Read Uncommitted
它是最低的隔离级别。Read Uncommitted最直接的效果是,一个事务可以读取另一个事务没有提交的更新结果。
其无法避免以下问题:脏读(Dirty Read)、不可重复读(Non-Repeatable Read)和幻读(Phanton Read)。
②、Read Committed
通常这是大部分数据库默认的隔离级别。在该隔离级别下,一个事务的更新操作结果只有在该事务提交之后,另一个事务才可能读取到同一笔数据更新后的结果。
可以避免脏读,但无法避免不可重复读和幻读。
③、Repeatable Read
Repeatable Read 可以保证在整个事务的过程中,对同一笔数据的读取结果是相同的,不管其它事务是否同时在对同一笔事务进行更新,也不管其它事务对同一笔数据的更新提交与否。
可以避免脏读和不可重复读,但无法避免幻读。
④、Serializable
它是最严格的级别。所有的事务操作都必须依次顺序执行,可以避免其它级别有的问题。但是太影响系统的并性能。
通常,我们会使用其它隔离级别加上相应的并发锁的机制来控制对数据的访问,这样既保证了系统性能不会有太大的损失,也能够在一定程度上保证数据的一致性。
网友评论