G术时刻 |GBase 8s数据库事务并发控制介绍(原生模式)

0 阅读3分钟

南大通用GBase 8s数据库(gbase database)事务并发控制(原生模式)解析:

基本概念 事务:构成单一逻辑工作单元的操作集合,这些操作要么全部执行成功,要么完全不执行。以保障数据操作的完整性。

ACID:

• 隔离性:事务间互不干扰,通过锁和隔离级别实现,例如转账过程中其他查询看不到中间状态。

• 原子性:全部执行或全部不执行,通过回滚日志实现,例如转账的两个步骤必须同时成功或失败。

• 持久性:提交后结果永久保存,通过日志先行 + 备份实现,例如转账成功后即使系统故障也不丢失。

• 一致性:事务前后数据状态一致,通过约束检查实现,例如转账前后总金额不变。

并发控制 并发控制是多用户并发访问数据库时,保证数据完整性和一致性的关键技术。需要在效率提升和数据一致性之间寻求平衡。

数据库通常都会面临的是多个用户的多个事务同时来访问,为了效率它通常都会选择并发的去执行这些事务。这时候就会带来并发导致的一些问题,就是最终的执行结果可能不符合任何合理的业务逻辑顺序。比如说我们常见的有超卖的现象(例如,初始票数为 1 时,两个事务同时读取并出售,导致超卖,产生数据错误。),那么如果并发调度的结果不等价于任何一种先后顺序的执行结果,这个结果它就是错误的,我们这时候就要说明什么样的调度结果是正确的,这里就说到了串行调度,就是说我们多个事务它的执行顺序是依次执行的,那么它的结果一定是正确的。

调度类型可以分为串行调度和并发调度:

• 串行调度:依次执行,简单但效率低

• 并发调度:交替执行,效率高但可能出错

串行调度效率会很低,我们并发调度还有并发控制,就是要找出一种并发调度,它的结果与串行调度是等价的。

那么什么样的调度结果是等价的?这时候我们就要说明什么是冲突操作。

下面介绍这几种操作就是冲突操作:

  1. 同一事物的里面的任意两个操作,它们的顺序是不可以改变的
  2. 不同事物对同一数据的写操作,它们的顺序是不可以改变的
  3. 不同事务对同一数据的读写操作,它们的顺序是不可以改变的 这个时候我们只需要找到一种并发调度的结果,他的冲突操作的顺序与串行调度的顺序是一致的,这时候我们找到的这个并发调度,它的结果就是正确的,我们也把这种调度称之为可串行化调度。

那么为了控制这些冲突操作的执行顺序,我们这里就要需要封锁技术......