Distributed System Transaction —— 2PL

2023-11-18

文章目录

并发控制常见的方式有2PL、MVCC等方式。

2PL

两阶段锁(two-phase locking)是用来解决多线程之间的竞态条件的,其算法非常简单,数据库中的每一个数据对象都有两种锁:(S)hared lock 和 e(X)clusive lock,即常见的读写锁。

操作和锁的对应关系很简单:如果一个transaction想要读取 [公式] ,那它必须获取 [公式] 上的shared lock;如果一个transaction想要写入 [公式] ,那它必须获取 [公式] 上的exclusive lock。

那么读写锁是怎么实现2PL的呢?2PL的精髓所在:

在2PL协议下,每个transaction都会经过两个阶段:在第一个阶段里,transaction根据需要不断地获取锁,叫做 growing phase (expanding phase);在第二个阶段里,transaction开始释放其持有的锁,根据2PL的规则,这个transaction不能再获得新的锁,所以它所持有的锁逐渐减少,叫做 shrinking phase (contracting phase)。

如果一个transaction释放了它所持有的任意一个锁,那它就再也不能获取任何锁。2PL通过引入expanding phase和shrinking phase的顺序,非常精妙简单地在有冲突操作的transaction之间产生了一个偏序,保证了serialization graph中不存在环。本质上来说,就是通过锁的设置保证了在每一组冲突操作中,第一个获得锁的transaction一定会排在后来的transaction之前执行,从而实现了等价于串行执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Distributed System Transaction —— 2PL 的相关文章

  • Redis——初识Redis

    Redis简介 Redis的数据结构致力于帮助用户解决问题 而不是像关系型数据库那样 要求用户扭曲问题来适应数据库 除此之外 通过复制 持久化和客户端分片 client side sharding 等特性 用户可以很方便的将Redis扩展成
  • Redis缓存击穿、雪崩、穿透!(超详细)

    缓存的击穿 穿透和雪崩应该是再熟悉不过的词了 也是面试常问的高频试题 不过 对于这三大缓存的问题 有很多人背过了解决方案 却少有人能把思路给理清的 而且 网络上仍然充斥着 大量不太靠谱的解决方案 难免误人子弟 我的这篇文章 则会对这三大缓存
  • 【redis】Redis cluster是AP架构还是CP架构?

    最近刚好在看CAP理论 加上之前分析的redis cluster 就在想redis的cluster是什么模式的 AP还是CP 首先还是简单讲下CAP 具体的可见 CAP分别是 强一致性 Consistency 可用性 Availabilit
  • Dubbo——快速启动(2)

    快速启动 Dubbo 采用全 Spring 配置方式 透明化接入应用 对应用没有任何 API 侵入 只需用 Spring 加载 Dubbo 的配置即可 Dubbo 基于 Spring 的 Schema 扩展 进行加载 mvn
  • Spark一路火花带闪电——Pair RDD常用算子(参数及其返回值)探究

    文章目录 转化算子 行动算子 转化算子 以键值对集合 1 2 3 4 3 6 为例 RDD U T 注意下面的函数 对应U和T reduceByKey f T T gt T RDD U T 合并具有相同值的键 rdd reduceByKey
  • windows安装docker desktop

    windows安装docker desktop 前言 一 docker desktop 是什么 二 安装步骤 1 下载 2 安装 总结 前言 这里针对windows 10 家庭中文版 其他版本部分步骤可跳过 一 docker desktop
  • Hadoop是小象——YARN / Split&Block

    了解Hadoop架构 Hadoop可运行于一般的商用服务器上 具有高容错 高可靠性 高扩展性等特点 特别适合写一次 读多次的场景 其架构如下 HDFS 分布式文件存储 可靠性由心跳机制和冗余提供 YARN 分布式资源管理 MapReduce
  • 基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化 中台 思想 多租户saas设计的企业开发架构 支持源码二次开发 支持其他业务系统集成 集中式应用权限管理 支持拓展其他任意子项目 架构源码可以加我WX haiwab
  • MQ相关问题

    ActiveMQ 功能完善 性能相对差 社区文档很久不更新了 丢失可能低 万级QBS 毫秒延迟 主从高可用 RabbitMQ 基于erlang 扩展性差 社区活跃 中小企业用 万级QBS 微妙延迟 主从高可用 RocketMQ 阿里开源 定
  • 数据库架构演变过程

    背景 在互联网初创时期 企业往往采用单体架构去搭建自己的应用系统 但是 随着企业的不断壮大 系统访问量不断随之上升 数据量也急剧增长 数据的存储是首先要解决的问题 在这个大数据时代 数据就是企业的命根子 数据库的单体架构很难满足数据的存储
  • JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1 传统三层架构 all in one项目 传统三层架构大致可以分为表现层 业务层和持久层 数据访问层 其中表现层负责接受请求和转发请求 业务层负责处理请求 注 事务管理 日志记录等AOP类型的操作均封装在这一层 持久层主
  • Hadoop是小象——Hadoop集群安装配置

    文章目录 所需软件 集群网络配置 集群SSH免密登陆设置 Hadoop安装配置 所需软件 Linux所需软件包括 JavaTM1 5 x 必须安装 建议选择Sun公司发行的Java版本 以前安装过 ssh 必须安装并且保证 sshd一直运行
  • Apache架构师都遵循的30条设计原则

    Srinath 通过不懈的努力最终总结出了 30 条架构原则 他主张架构师的角色应该由开发团队本身去扮演 而不是专门有个架构师团队或部门 Srinath 认为架构师应该扮演的角色是一个引导者 讨论发起者 花草修建者 而不是定义者和构建者 S
  • 几张架构图阐述微服务架构治理相关知识点

    微服务架构的技术点 超时时间设置 接口重试机制 流量QPS限流 请求熔断处理 请求降级处理 今天给大家分享一下以上相关的知识点 通过微服务系统之间RPC通信的方式 以架构图的形式给大家展开介绍 1 超时时间设置 应用访问业务系统A 业务系统
  • Distributed Database System —— Mysql Binlog不止是主从同步

    文章目录 引入 Binlog应用场景 读写分离 数据恢复 保证数据最终一致性 异地多活 引入 Mysql 5 0以后 支持通过binary log 二进制日志 以支持主从复制 复制允许将来自一个MySQL数据库服务器 master 的数据复
  • 伸缩自如的ElasticSearch——文档CRUD操作

    文章目录 文档 文档元数据 index type id 取文档 更新文档 创建文档 删除文档 处理冲突 文档 在大多数应用中 多数实体或对象可以被序列化为包含键值对的 JSON 对象 一个 键 可以是一个字段或字段的名称 一个 值 可以是一
  • Zookeeper——zookeeper基础

    在深入了解ZooKeeper的运作之前 让我们来看看ZooKeeper的基本概念 我们将在本章中讨论以下主题 Architecture 架构 Hierarchical namespace 层次命名空间 Session 会话 Watches
  • 应用使用Druid连接池经常性断链问题分析

    前段时间有应用使用Druid连接池经常的提示断链报错 整个问题排查分析过程很有意思 这里将Druid连接池 数据库层以及负载均衡层的配置分析下 记录整个问题的分析过程 同时梳理下Druid连接池的配置和连接保活及回收机制 1 问题背景 应用
  • Distributed System Transaction —— 2PL

    文章目录 2PL 并发控制常见的方式有2PL MVCC等方式 2PL 两阶段锁 two phase locking 是用来解决多线程之间的竞态条件的 其算法非常简单 数据库中的每一个数据对象都有两种锁 S hared lock 和 e X
  • Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解 不知道大家有没有去看小编最后留下的问题 欢迎对文章进行评论也希望大家和小编多多交流 今天接着为大家带来Dubbo的内容 传输协议 上次调用机制中并没有涉及Dubbo传输的协议 这次容小

随机推荐

  • 面试题61. 扑克牌中的顺子(java+python)

    从若干副扑克牌中随机抽 5 张牌 判断是不是一个顺子 即这5张牌是不是连续的 2 10为数字本身 A为1 J为11 Q为12 K为13 而大 小王为 0 可以看成任意数字 A 不能视为 14 示例 1 输入 1 2 3 4 5 输出 Tru
  • hex文件格式学习记录

    hex文件 hex文件是什么 hex文件的数据结构 按照记录类型具体分析 Mermaid Flowchart hex文件是什么 它是由一行行符合Intel HEX 文件格式的文本所构成的ASCII 文本文件 每一行包含一 个 HEX 记录
  • Java实验三 基于GUI的网络通信程序设计【代码构建逻辑】【双向通信】【超多细节优化!!】

    写在前面 这次实验代码的构建主要是更加熟练的运用socket网络编程 文件输入输出流 GUI设计 容器的使用 多线程的运用等等多方面的知识 是综合类题型 做完受益身心的类型 题目如下 编写程序完成以下功能 1 设计一个基于GUI的客户 服务
  • iOS的几个特效实现思路

    最近看一个app的源码 发现基本没有用第三方的开源组件 但是特效也做得不错 总结一下实现的思路 简单的抽屉效果 效果如图 这种抽屉效果很常见 开源组件也很多 但是一般开源组件都对Controller的结构有要求 有时候不是很方便 原理主要是
  • qmake手册(Qt5.9.3)

    qmake手册 qmake手册 概观 描述一个项目 建立一个项目 使用第三方库 预编译头文件 入门 从简单的开始 使应用程序可调试 添加平台特定的源文件 如果文件不存在停止qmake 检查多个条件 创建项目文件 项目文件元素 变量 注释 内
  • 小程序报错:Unexpected end of JSON input

    报错原因 跳转页面传参内包含英文 let data aaa 你学会了吗 由于参数内携带英文 所以报错 wx navigateTo url home home data encodeURI JSON stringify data 解决方法 先
  • ECCV20 - OCRNet:聚合对象上下文特征用于语义分割《Object-Contextual Representations for Semantic Segmentation》

    文章目录 原文地址 论文阅读方法 初识 相知 主要技术 部分实验 回顾 原文地址 原文 论文阅读方法 三遍论文法 初识 对于语义分割这类密集预测任务 上下文特征是非常重要的信息 在早期的一些工作中 主要着重于捕获多尺度特征 空间维度 比如P
  • Golang学习笔记 结构体和指针

    Golang是一门很特殊的语言 虽然它出生比较晚 但是在很多地方却和现在的编程语言有所不同 现在的编程语言要么是函数式的 要么是面向对象的 而Go语言却有指针 结构体这些概念 并解决了C语言的一些坑 从这个角度上说 Golang可以看做C语
  • 【mysql】-【innodb数据存储结构】

    文章目录 数据库的存储结构 页 磁盘与内存交互基本单位 页 页结构概述 页的大小 页的上层结构 页的内部结构 File Header 文件头部 和File Trailer 文件尾部 File Header 文件头部 38字节 File Tr
  • Vue3-导出excel表格

    安装xlsx和file saver yarn add file saver xlsx 或 npm install file saver S npm install xlsx S 页面引入xlsx和file saver import as X
  • 不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事...

    文章授权转载自视觉志 版权归原作者所有 作者 不一 2009年 19岁的孙玲和朋友一起 坐上了前往深圳的绿皮火车 经过14个小时的疲倦车程 她有了一个全新的身份 工厂车间 流水线上的一名女工 那个时候 如果有人告诉孙玲 你以后会成为一名优秀
  • 无限创建gmail邮箱账号

    文章目录 说明 准备工作 操作方法 1 用户名之间加 2 用户名后面加 3 把后缀变为http googlemail com 说明 国外很多网站都需要gmail邮箱注册 如果能有很多gmail账号 那么就能做很多事 自己体会哈 注册地址 h
  • Python 模块与包

    1 模块 一个模块就是一个包含python代码的文件 后缀名称是 py就可以 模块就是个python文件 为什么我们用模块 程序太大 编写维护非常不方便 需要拆分 模块可以增加代码重复利用的方法 当作命名空间使用 避免命名冲突 如何定义模块
  • Bluetooth(HC)与STM32的连接通讯(在手机端通过蓝牙控制STM32板子小灯)

    一 说明 写本文的目的是抛弃一些比较专业的描述 从一些刚接触的小白角度出发 帮助此类朋友解决一些问题 所以内容都是用比较通俗的白话来写 网上已经有许多的比较专业的描述教程 若你想要一些比较专业性的描述 本人建议你看其他朋友的 二 概论 本文
  • 云孚科技助力第三届中国情感计算大会(CCAC 2023)胜利召开

    中国情感计算大会CCAC 2023年6月30日 7月2日 由中国中文信息学会情感计算专委会主办 西安交通大学承办的第三届中国情感计算大会 The Third Chinese Conference on Affective Computing
  • 与大家讨论如何用opencore amr在iOS上decode(已解决)

    两周前空闲的时候编译了opencore for iOS 如何编译的请参看这一篇文章 今天又有空 所以就试着去用了一下这个库 我想把 amr的文件decode为 wav格式的 在test目录下有简单的例子 教大家如何用这个库 于是我就照着里面
  • 解决 ifconfig: command not found

    apt get install net tools
  • Swing简单的文件上传

    package com iss iaf codemanagement import javax swing JOptionPane 代码管理应用程序 项目的入口 author xinzhangah data 2016 12 02 publi
  • 区块链能否推进教育行业的发展?

    随着互联网时代的到来 现在教育行业的教学模式 已经脱离了原先的黑板板书以及书本就读 信息的传播化将传统的教育行业带入了快速接受信息的时代 而不管是网上选课还是课程的在线直播 都是要通过第三方的平台才可以获取这些信息的 但是在方便人们学习的时
  • Distributed System Transaction —— 2PL

    文章目录 2PL 并发控制常见的方式有2PL MVCC等方式 2PL 两阶段锁 two phase locking 是用来解决多线程之间的竞态条件的 其算法非常简单 数据库中的每一个数据对象都有两种锁 S hared lock 和 e X