在谈论数据库的时候,咱们老是但愿它的查询性能更快一些,并行事务更多一些,然而在另外一方面,却也在担心数据同步、脏读、延迟带来的数据混乱。。。数据库
原子性指的是,数据的某个状态A,到状态B的操做是一步到位的,叫作原子性。对于数据库的事务操做, 在底层硬件的实现包括软件过程的层面确定不是原子性的,不过数据库在设计中保证了同一事务中的 各类操做的共同成功,共同失败,因此能够理解为一步操做。
- Concurrency(一致性)
一致性指的是,对于操做同一数据单元的多个事务,对该数据单元的可见结果是一致的。所谓同一数据单元, 根据数据操做不一样,多是一张表,多是一行记录,多是其余的在并行事务中同时操做的数据。
- Isolation(隔离性)
隔离性指的是,对某个数据单元,某个事务在操做的时候,其余并行事务对数据单元不具有操做权限。 这个能够从程序实现的角度理解为不一样线程访问统一资源的同步特性。
- Durabilily(持久性)
持久性指的是,数据库对于从状态A到状态B的改变是持久的,不变的。
隔离级别能够理解为并行事务操做同一数据单元时候的执行次序。
- Read Uncommitted
一个事务进行更新数据操做时,无需提交当前操做结果,其余并行事务就能够读取当前操做数据单元的数据。 注意: 这样会形成数据的不一样步,可是对于某些无需数据同步的场景效率能够提升。好比,一个电商产品 评论的业务中,一个用户在评论商品,与此同时其余用户在查看评论,无需插入操做提交就能够容许读, 由于没必要关心。
- Read Committed
一个事务进行更新数据操做时,必须提交当前操做结果以后,其余并行事务才能够读取当前操做数据单元的数据。
- Repeatable Read
同一事务中,在查询同一个语句的时候,所得到的结果是同样的,(也就是有事务缓存的?这个有待 考证),统一与事务开始时候得到的结果一致。
- Serializable
一个事务在进行的时候,其余事务均不可访问该数据单元。简单粗暴,性能低下。不过在要求数据严格一致的状况下 是最有效的方式。