内存数据库事务

前言


我们在使用数据库的时候,应该都体验过事务,我们对事务最直观的感受就是:一系列的操作要么全部生效,
要么全部不生效,不会最后处于一种中间状态。其实这句话似乎只能体现事务的原子性,那其他几个特性呢?
本文会先回顾一下事务的定义和ACID特性,再以一个具体的例子展示如何实现事务的四个特性。

事务

定义

所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

特性

  • 原子性(Atomicity):事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生;
  • 一致性(Consistency):事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
  • 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
  • 持久性(Durability):事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。