openGauss数据库实验教程 课件 第12章 并发控制与锁机制_第1页
openGauss数据库实验教程 课件 第12章 并发控制与锁机制_第2页
openGauss数据库实验教程 课件 第12章 并发控制与锁机制_第3页
openGauss数据库实验教程 课件 第12章 并发控制与锁机制_第4页
openGauss数据库实验教程 课件 第12章 并发控制与锁机制_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十二章

并发控制与锁机制openGauss数据库事务处理关键部分探究目录实验介绍1.实验步骤3.实验讨论与总结5.实验原理2.实验结果4.1.实验介绍了解实验背景、目的及原理实验背景实验开展的缘由是openGauss数据库实现事务ACID特性的重要部分,保障数据操作正确性并发控制与锁机制重要性目前数据库原理教学中,该模块缺乏有效的实践教学方式教学实践缺乏手段并发控制与锁机制涉及大量复杂代码,增加了教学实践难度代码复杂原因借助openGauss开源代码,进行原理实践并减小代码复杂影响实验目标实验目的要达成的目标理解事务处理原理深入理解openGauss事务处理的基本概念和运行机制了解事务实现机制掌握openGauss事务处理模块的具体实现方式理解锁机制原理清晰认识openGauss锁机制的工作原理和作用了解锁实现过程知晓openGauss锁机制的若干实现步骤和流程掌握四种锁复现方法学会复现Share、AccessShare、RowExclusive、AccessExclusive锁了解相关函数与结构体熟悉与实验相关的函数和结构体的源代码2.实验原理深入探究实验相关原理openGauss事务处理剖析事务处理相关内容事务概念事务是数据库操作执行单位,需满足ACID属性,保障数据操作正确事务处理模块总体结构包含事务管理器、日志管理器等多个部分,协同完成事务处理事务并发控制分层分为上层事务块和底层事务,分层设计便于处理业务语句事务状态机处理过程以SQL语句为例,展示事务状态机在BEGIN、SELECT、END中运转事务状态转换相关函数介绍事务处理、执行、上层状态机控制函数,用于事务状态转换事务ID分配openGauss为事务分配唯一xid,采用uint64单调递增序列CLOG和CSNLOGCLOG记录事务提交状态,CSNLOG记录事务提交序列号,采用SLRU机制总体架构openGauss事务处理模块总体架构事务块状态机转换openGauss事务块状态机转换openGauss锁机制自旋锁用原子指令实现,加锁时间短,无死锁检测,消耗CPU轻量级锁用原子操作等实现,有共享和排他锁,有死锁检测机制常规锁用哈希表实现,支持多种锁模式,有等待队列和死锁检测死锁检测机制包括LWLock和常规锁死锁检测,采用不同方式解决死锁问题无锁原子操作封装原子操作,取代自旋锁,实现简单变量原子更新解读锁机制相关知识t_c结构体队列t_c结构体队列关系图关键数据结构及函数认识重要的数据结构和函数SnapshotData结构体表示事务处理时的快照,用于记录事务相关信息HeapTupleSatisfiesMVCC函数用于一般读事务的快照扫描,基于CSN进行判断LWLock结构体轻量级锁,包含状态位、等待链表等信息与锁相关结构体和宏定义包括LOCKMODE、LockMethod等定义,用于锁的管理获取锁的相关函数如LockAcquire等函数,用于获取锁资源3.实验步骤详细展示实验操作步骤查看锁信息获取表锁相关信息创建表创建users表,包含多个字段和主键约束插入数据向users表插入随机数据,为后续操作做准备查看会话id通过命令查看当前会话的会话id查找当前会话锁从系统表中查找当前会话添加的锁信息查找表relationid确定所创建users表的relationid复现Share锁生成事务添加Share锁通过BEGIN和创建索引命令,在users表上添加Share锁进行INSERT操作另一个会话进行INSERT操作,发现命令被堵塞进行SELECT操作另一个会话进行SELECT操作,可顺利执行提交事务释放锁提交第一个会话事务,第二个会话INSERT操作成功验证Share锁特性复现share锁生成Share锁复现AccessShare锁验证AccessShare锁特性通过BEGIN和查询语句,在users表上添加AccessShare锁生成锁另一个会话进行SELECT操作,可顺利执行进行SELECT操作另一个会话进行ALTER操作,命令被堵塞进行ALTER操作提交第一个会话事务,第三个会话ALTER操作成功提交事务释放锁复现AccessShare锁生成AccessShare锁复现RowExclusive锁验证RowExclusive锁特性通过BEGIN和更新语句,在users表上添加RowExclusive锁生成锁另一个会话进行CREATEINDEX操作,命令被堵塞进行CREATEINDEX操作提交第一个会话事务,第二个会话CREATEINDEX操作成功提交事务释放锁复现RowExclusive锁生成RowExclusive锁复现AccessExclusive锁验证AccessExclusive锁特性生成锁通过BEGIN和更改表结构语句,在users表上添加AccessExclusive锁进行SELECT操作另一个会话进行SELECT操作,命令被堵塞提交事务释放锁提交第一个会话事务,第二个会话SELECT操作成功复现AccessExclusive锁生成AccessExclusive锁添加代码输出锁信息在LockAcquireExtendedXC函数中添加代码,输出获取锁信息添加获取锁代码在LockRelease和LockReleaseAll函数中添加代码,输出释放锁信息添加释放锁代码关闭数据库,进行编译安装后启动,输出相关信息关闭启动数据库重新连接gsql客户端,输出多条LockReleaseAll信息重新连接客户端删除并重新插入数据,输出获取和释放锁的信息删除插入数据执行查询语句,输出获取和释放AccessShareLock锁信息执行查询语句获取锁操作相关信息添加代码示例添加获取锁代码添加代码示例添加释放锁代码4.实验结果呈现实验达成的情况各锁复现验证结果Share锁复现结果完成Share锁复现,验证其对SELECT操作无堵塞AccessShare锁复现结果完成AccessShare锁复现,验证其对SELECT、INSERT操作无堵塞RowExclusive锁复现结果完成RowExclusive锁复现,验证其对SELECT、INSERT操作无堵塞AccessExclusive锁复现结果完成AccessExclusive锁复现,了解其特性展示各锁复现及验证情况讨论与总结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论