数据库 事务 ACID解释

acid(数据库事务正确执行的四个基本要素的缩写)

 

ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具备这四种特性,不然在事务过程(Transaction processing)当中没法保证数据的正确性,交易过程很可能达不到交易方的要求。web

  • 中文名数据库

  • acid并发

  • 原子性url

  • 整个事务中的全部操做spa

  • 一致性日志

  • 在事务开始以前和事务结束之后htm

  • 隔离性事务

  • 隔离状态执行事务ci

目录

  1. 1 原子性get

  2. 2 一致性

  3. 3 隔离性

  4. 4 持久性

原子性

编辑

整个事务中的全部操做,要么所有完成,要么所有不完成,不可能停滞在中间某个环节。事务在执行过程当中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务历来没有执行过同样。

一致性

编辑

一个事务能够封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,无论在任何给定的时间并发事务有多少。

也就是说:若是事务是并发多个,系统也必须如同串行事务同样操做。其主要特征是保护性和不变性(Preserving an Invariant),以转帐案例为例,假设有五个帐户,每一个帐户余额是100元,那么五个帐户总额是500元,若是在这个5个帐户之间同时发生多个转帐,不管并发多少个,好比在A与B帐户之间转帐5元,在C与D帐户之间转帐10元,在B与E之间转帐15元,五个帐户总额也应该仍是500元,这就是保护性和不变性

隔离性

编辑

隔离状态执行事务,使它们好像是系统在给定时间内执行的惟一操做。若是有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操做间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

持久性

编辑

在事务完成之后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。

因为一项操做一般会包含许多子操做,而这些子操做可能会由于硬件的损坏或其余因素产生问题,要正确实现ACID并不容易。ACID建议数据库将全部须要更新以及修改的资料一次操做完毕,但实际上并不可行。

目前主要有两种方式实现ACID:第一种是Write ahead logging,也就是日志式的方式(现代数据库均基于这种方式)。第二种是Shadow paging。

相关文章
相关标签/搜索