2023-08-28 数据库-并发控制-初步思考

这篇具有很好参考价值的文章主要介绍了2023-08-28 数据库-并发控制-初步思考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要:

此前做查询优化和查询执行比较多, 一般是在一个单独的事务内考虑优化查询.

最近在做并发控制方面的事情, 一些此前考虑的较少的方面需要做更为深入的思考.

并发控制和事务的特性息息相关, 直白的说就是事务的隔离性, 但是这么理解过于肤浅, 本文做一些初步的思考.文章来源地址https://www.toymoban.com/news/detail-678053.html

为什么需要并发控制?

一. 从资源临界区的角度理解

  1. 一个比较明显的点就是数据库的数据对于所有的会话都保持了内存可见性, 也就是所有的客户端会话在操作临界区的数据
  2. 从线程安全的角度, 对于临界区, 是要进行加锁操作, 以保持每个执行线程的内存可见性
  3. 即使是每个会话的执行序列都正确执行, 那么操作同一份数据也会导致两个独立的会话相互影响

二. 从事务的角度理解

  1. 按照八股文的说法事务的特性ACID, 这里必须保持隔离性
  2. 事务的目的是为了保证数据库在遇到问题的时候的安全, 引发出了ACID四个特性, 也导致了一系列的八股文
  3. 那么考虑下, 事务是什么? 是的,是一些列操作序列的集合, 分为读r和写w
  4. 那么为什么事务需要并发控制呢?
  5. 如果在某一时刻, 仅仅只有一个事务, 那么就没有并发, 自然不需要并发控制
  6. 如果在同一个时刻,有多个事务,但是这个事务,是排队执行, 也就是可串行化的隔离级别,那么这些事务也不会互相影响, 自然也不需要并发控制
  7. 那么为什么不把事务都做成可串行化的,一个一个排队在单个线程中执行呢?
  8. redis是单个线程的串行化处理的, 但是这么做有前置条件
    1. redis的数据主要在内存, 读和写也是在内存, 持久化是在后台的子进程单独的去处理, 所以可以理解成单个事务操作耗时极短
    2. 如果单个事务执行耗时过长,将会后续排队的事务造成影响 
  9. 但是如果直接套用在AP领域或者关系型数据库领域, 就不适合,因为事务必须要保证持久性, 一个事务的完成,必须要持久化到磁盘, 这会单个事务的执行耗时有巨大的影响
  10. 所以一般的数据库对于单个客户端会话都采用了一个独立的线程去处理,而不是像redis那样所有的客户端的会话都只在一个线程中处理。极端的例如pg是用一个独立的进程去处理

到了这里,关于2023-08-28 数据库-并发控制-初步思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库第十章(数据库恢复技术)十一章(并发控制)

    目录 1.事务 2.并发控制 1.事务 事务的特点:ACID 原子性   atom 一致性   consistent 隔离性   isolation 持久性   durable 故障的种类 1.事务内部故障         措施:采取redo重做和undo撤销技术 2.系统故障DBMS         措施:重启 3.介质故障         硬件损坏 4.计算机病毒   数据恢

    2024年02月09日
    浏览(59)
  • 数据库总复习第十一章 并发控制

    事务是并发控制的基本单位 并发操作带来的数据不一致性 R(x):读数据x W(x):写数据x 丢失修改 T2的提交结果破坏了T1的提交结果,导致T1的修改被丢失 不可重复读 T1读取某一数据,T2对其做了修改,当事务T1再次读该数据,得到与前一次不同的值 T1读取某些数据,T2删除其中部

    2024年01月17日
    浏览(61)
  • 【数据库】树形数据组织架构下的封锁并发控制,B树索引并发访问控制,树协议原理及案例分析

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年02月04日
    浏览(41)
  • java进行数据库操作的并发控制的2种方法

    本文分享自华为云社区《java进行数据库操作的并发控制》,作者:张俭。 在现代应用编码中,从数据库里面find出来,进行一些业务逻辑操作,最后再save回去。即: 但是这样的业务操作,如果一个线程修改年龄,另一个线程修改昵称,最后save回去,可能会导致年龄/昵称某一

    2024年02月04日
    浏览(42)
  • 深入解析MVCC:多版本并发控制的数据库之道

    目录 引言 一、什么是MVCC? 二、MVCC的实现原理 2.1版本号 2.1.1版本号的作用: 2.1.2版本号的组成: 2.1.3.示例 2.2事务id 2.2.1事务ID的作用: 2.2.2事务ID的生成: 2.2.3示例: 2.3 快照(Snapshot) 2.3.1快照的作用: 2.3.2快照的实现方式: 2.3.3示例: 2.4版本链(Version Chain) 2.4.1版本链

    2024年01月24日
    浏览(65)
  • 2023-09-07 monetdb-mvc的实现与并发控制-思考

    monetdb用mvc模块实现了并发控制中对于事务的调度管理, mvc可以看作一次执行的完整的抽象. 并发控制中一个比较需要注意的地方就是调度管理以及锁的使用和管理, 是的, 事务对于资源的使用的串行会使用到锁, 但是申请锁和释放锁却不能由事务本身来进行, 而是调度事务的模块

    2024年02月09日
    浏览(38)
  • POSTGRESQL 关于2023-08-14 数据库自动启动文章中使用KILL 来进行配置RELOAD的问题解释...

    开头还是介绍一下群,如果感兴趣Polardb ,mongodb ,MySQL ,Postgresql ,redis ,SQL SERVER ,ORACLE,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加 liuaustin3微信号 ,在新加的朋友会分到3群(共1170人左右 1 + 2 + 3) 首先道歉,昨天关于P

    2024年02月12日
    浏览(50)
  • 系统架构设计师---事务管理、并发控制、数据库的备份与恢复

    目录 事务管理       定义       事务的四个特性(ACID)     相关SQL语句 并发控制     并发操作     封锁  数据库的备份与恢复      备份(转储)与恢复        备份分类       数据库的四类故障          DBMS 运行的基本工作单位是事务,事务是用户定义的一个数据库

    2024年02月12日
    浏览(58)
  • 【数据库】基于时间戳的并发访问控制,乐观模式,时间戳替代形式及存在的问题,与封锁模式的对比

    ​ 专栏内容 : 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学

    2024年02月03日
    浏览(50)
  • 【数据库原理】(28)数据库设计概述

    数据库设计是为了实现数据库应用系统,涉及结构特性设计、行为特性设计和物理模式设计三个主要方面。 1. 数据库的结构特性设计 数据库的结构特性设计是数据库设计的关键,包括数据库结构的设计和建立合理的数据模型。这一部分也被称为数据库的静态结构设计。 步骤

    2024年01月19日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包