首页 > 数据库 >数据库并发控制原理

数据库并发控制原理

时间:2022-08-31 22:47:45浏览次数:49  
标签:事务 schedule 数据库 Schedule 并发 原理 执行

1.Transaction

数据库事务以Begin()开始,以Commit()Abort()结束。事务需要满足ACID属性。

1.1 ACID

Atomicity

  • A:Atomicity 原子性,即多个操作合并在一起,如一个原子一样不可分割。

    可通过一下方法实现:

    • Logging :记录一个事务里面的所有请求到 log 中,当 abort 时,可以根据 log 日志撤销操作。每一次在 Log 中新增操作时需同时持久化到硬盘中。

    • Shadow Paging:修改数据时,拷贝一份该数据的page,在其上面修改。当事务commit之后,该page才对其他事务可见。

  • C:Consistency,一致性,这个和分布式系统的里面的一致性含义并不相同。CAP 中的一致性更多指的是数个副本的一致。ACID 中的一致性指的是数据库处于应用程序所期待的状态。比如银行从 A 账户转一部分钱到 B 账户,肯定是希望 A+B 账户的总金额在任何时刻都是一样的。

  • I:Isolation,独立性,即不同的事务之间不会互相干扰,互相独立。

    数据库通过 concurrency control(并发控制)来保证不同事务之间的独立性,互不干扰。并发控制分为乐观模型和悲观模型。

    • Optimistic假设事物的冲突是很少发生的,只有当事务 commit 的时候,才会检查是否存在冲突,确实是否需要 abort。适合多读少写的场景。通常基于 MVCC,timestamp 的并发控制是乐观模型。
    • Pessimistic假设冲突是经常发生,在一个事务开启的时候,就先检查是否存在冲突。适合少读多写的场景。通常基于锁的的并发控制是悲观模型。
  • D:Durability,就是持久化。同样可以通过 logging 或 shadow page 来实现。

1.2 Schedule

schedule即对于多个事务如何安排执行策略的问题。

  • Serial Schedule

指的是多个不同事务按顺序执行。如下图先执行 T1 后再执行 $T2$,或先执行 T2 再执行 T1,两个 txn 不会穿插在一起。

如果数据库种所有的 schedule 都是 serial schedule,这样性能很差,相当于数据库是单线程执行的(不过 Redis 好像就是单线程)。数据库并发控制存在的意义就是让并发执行的 schedule 的结果和你 serial schedule 执行的结果一样。

  • Equivalent Schedule

在任何数据库状态下,如果两个 schedule 执行后均能得到相同的结果,那么称这两个 schedule 为 equivalent schedule。

  • Serializable Schedule

如果一个 schedule 和一个 serial schedule 互为 equivalent schedule,那么称该 schedule 为 serializable schedule。

  • Recoverable Schedule

标签:事务,schedule,数据库,Schedule,并发,原理,执行
From: https://www.cnblogs.com/lianghui123/p/16644784.html

相关文章

  • Java实现greenplum数据库中csv文件的导入和导出
    Java实现greenplum数据库中csv文件的导入和导出背景:greenplum数据库是在开源的PostgreSQL的基础上采用MPP架构实现的关系型分布式数据库,在使用greenplum数据库进行开发的......
  • 并发多线程8condition_variable、wait、notify_one、notify_all
    第八节condition_variable、wait、notify_one、notify_all一、条件变量condition_variable、wait、notify_one、notify_allstd::condition_variable实际上是一个类,是一个......
  • 在Ubuntu系统上安装StoneDB数据库
    今天我会进行StoneDB数据库在Ubuntu22.04系统下的安装。严格按照官方文档的步骤执行,看看能否顺利安装。准备Ubuntu系统我已在虚拟机中安装好了Ubuntu22.04版本的系统,......
  • MOS管结构原理
    MOS管是金属(metal)—氧化物(oxide)—半导体(semiconductor)场效应晶体管,或者称是金属—绝缘体(insulator)—半导体。MOS管的source和drain是可以对调的,他们都是在P型backgate......
  • CMOS工艺OD门,传输门,三态门原理应用浅析
    纲要OD门传输门三态门1.OD门i.概念在CMOS电路中为了满足输出电平变换,吸收大负载电流以及实现线与连接等需要,需要将输出级电路结构改为漏极开路输出的MOS管,构成漏......
  • 开源公开课丨ChengYing安装原理剖析
    一、直播介绍之前的内容,我们为大家分享了ChengYing入门介绍,以及ChengYing部署Hadoop集群实战,本期我们为大家分享ChengYing安装原理。本次直播我们将详细介绍ChengYing安......
  • 并发多线程6
    第六节unique_lock(类模板)详解1.unique_lock取代lock_guardunique_lock比lock_guard灵活很多(多出来很多用法),效率差一点。unique_lock<mutex>myUniLock(myMutex);2.uni......
  • 并行 并发 同步 异步
    并发:是指在一段时间内多个程序运行在一个CPU上并行,在同一时间点,多个程序运行多个CPU。所以并行最大就是CPU的数量由于GIL的存在,同一个进行的线程只能运行在用一个CPU上,......
  • TimescaleDB时间序列数据库
    TimescaleDB:这是一款支持完整sql开源的时间序列数据库。用处1、数据量庞大2、只做时间索引类的插入3、很少更新数据TimescaleDB的好处:基于时序优化自动分片(自动......
  • 记录一次数据库CPU被打满的排查过程
    1前言近期随着数据量的增长,数据库CPU使用率100%报警频繁起来。第一个想到的就是慢Sql,我们对未合理运用索引的表加入索引后,问题依然没有得到解决,深入排查时,发现在orderb......