IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> (P64-66)数据库系统下-锁 -> 正文阅读

[大数据](P64-66)数据库系统下-锁

1.基于封锁的并发控制方法

并发调度的正确性:

  • 当且仅当在这个并发调度下所得到的新数据库结果与分别串行地运行这些事务所得的新数据库完全一致,则说调度是正确的
  • 冲突可串行?可串行性?并发调度的正确性
  • 怎么样产生一个正确的并发调度?也就是怎么产生一个冲突可串行化的调度?主要分为:基于锁的方法金额基于撤回的方法
    在这里插入图片描述

2.什么是锁

锁” 是控制并发的一种手段

  • 每一数据元素都有一唯一的锁
  • 每一事务读写数据元素前,要获得锁。
  • 如果被其他事务持有该元素的锁,则要等待。
  • 事务处理完成后要释放锁。
    L i ( A ) : 事 务 T i 对 数 据 元 素 A 加 锁 L_i(A) : 事务T_i 对数据元素A加锁 Li?(A):Ti?A
    U i ( A ) : 事 务 T i 数 据 元 素 A 解 锁 U_i(A) : 事务T_i 数据元素A解锁 Ui?(A):Ti?A
    在这里插入图片描述
  • 调度器可利用锁来保证冲突可串行性
  • 锁本身并不能保证冲突可串行性。
  • 锁为调度提供了控制的手段。但如何用锁,仍需说明。—不同的协议
    在这里插入图片描述

3.封锁协议之锁的类型

排他锁X (exclusivelocks),读锁

  • 只有一个事务能读、写,其他任何事务都不能读、写

共享锁S (sharedlocks),写锁

  • 所有事务都可以读,但任何事务都不能写

更新锁U (Updatelocks)

  • 初始读,以后可升级为写

增量锁I (Incrementallock)

  • 增量更新(例如A=A+x)
  • 区分增量更新和其他类型

封锁协议需要考虑什么?

  • 封锁协议之相容矩阵
    在这里插入图片描述
    在这里插入图片描述

封锁协议之加锁/解锁时机

  • 0级协议(0-LP)
    在这里插入图片描述

  • 1级协议(1-LP)
    在这里插入图片描述

  • 2级协议(2-LP)
    在这里插入图片描述

  • 3级协议(3-LP)
    在这里插入图片描述

4.SQL之隔离性级别(允许程序员选择使用)

读未提交 (read uncommitted) —相当于0级协议
读已提交 (read committed)—相当于1级
可重复读(repeatable read) —相当于2级协议
可串行化(serializable) —相当于3级协议

幻读指的是事务不是串行发生时的一种现象,是事务A读取了事务B已提交的新增数据。

  • 例如第一个事务对一个表的所有数据进行修改,同时第二个事务向表中插入一条新数据。那么操作
    第一个事务的用户就发现表中还有没有修改的数据行,就像发生了幻觉一样。解决幻读的方法是增加范围锁( range lock)或者表锁
  • 小结
    在这里插入图片描述
    锁协议之封锁粒度(LOCKING GRANULARITY)
  • 封锁粒度是指封锁数据对象的大小。
  • 粒度单位:属性值->元组->元组集合->整个关系->整个DB某索引项 ->整个索引
  • 由前往后: 并发度小,封锁开销小;
  • 由后往前: 并发度大,封锁开销也大
  • 当前的数据库都是在元组上进行加锁解锁

封锁协议需要考虑什么?

  • 封锁的类型
  • 相容性矩阵
  • 封锁的粒度
  • 封锁的时机

5.两段封锁协议

在这里插入图片描述

两段封锁协议是一种基于锁的并发控制方法
两段封锁协议(2PL: two-Phase Locking protocal)

  • 读写数据之前要获得锁。每个事务中所有封锁请求先于任何一个解锁请求
  • 两阶段:加锁段,解锁段。加锁段中不能有解锁操作,解锁段中不能有加锁操作
    在这里插入图片描述
    在这里插入图片描述

两段封锁协议是可以保证冲突可串行性的!

  • 两段锁协议是可能产生“死锁”的协议。
    如何消除死锁?强制撤销一个事务。
    在这里插入图片描述
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:26:02  更:2021-11-23 12:26:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:12:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码