postgreSQL源码分析
文章平均质量分 88
YOUTH11111111
这个作者很懒,什么都没留下…
展开
-
postgreSQL——并发控制7(日志管理)
2021@SDUSC目录概述CLOG日志管理器1.CLOG日志管理器相关数据结构2. CLOG日志管理器主要操作(1)日志管理器的初始化(2) CLOG 日志的写操作(3) CLOG日志的读操作(4) CLOG日志页面的初始化(5) CLOG 日志段的创建(6) CLOG 日志的启动(7) CLOG 日志的关闭(8)创建检查点时CLOG日志的操作(9) CLOG 日志的扩展(10) CLOG日志的删除(12) CL0G日志的REDO操作总结原创 2021-12-26 17:08:03 · 728 阅读 · 0 评论 -
postgreSQL——并发控制6(日志管理)
2021@SDUSC目录概述SLRU缓冲池1.缓冲池的并发控制2.缓冲区相关数据结构3.缓冲池主要操作(1)缓冲池的初始化(2)缓冲区的选择(3)缓冲池页面的初始化(4)缓冲池页面的读操作总结概述日志是数据库系统必不可少的一部分,它以一种安全的方式记录数据库变更的历史。当系统出现故障后,数据库系统通过使用日志来重建对数据库所做更新的过程,以恢复数据库到一致状态,从而保证数据库的一致性和完整性。PostgreSQL采用的日志主要有XLOC和CLOG,即事原创 2021-12-26 16:32:31 · 830 阅读 · 0 评论 -
postgreSQL——并发控制5(多版本并发控制)
2021@SDUSC目录概述MVCC相关数据结构MVCC与快照总结概述PostgreSQL为开发者提供了丰富的管理数据并发访问的工具。在内部,PostgreSQL利用多版本并发控制( MVCC, Multi- Version Concurrency Control)来维护数据的一致性。这就意味着当检索数据时,每个事务看到的只是一段时间之前的数据快照,而不是数据的当前状态。这样,如果对每个数据库会话进行事务隔离,就可以避免一个事务看到其他并发事务的更新而导致不一致的数据。使用多.原创 2021-12-17 22:37:50 · 1053 阅读 · 0 评论 -
postgreSQL——并发控制4(死锁处理)
2021@SDUSC目录概述(1) 死锁处理相关数据结构的初始化(2)死锁检测入口函数(3)死锁检测调整函数(4)等待图的环检测函数总结概述在PostgreSQL中,当进程不能获得锁进人等待队列时,就会触发死锁检测的操作。如果发现了“死锁",进而尝试进行死锁的解除操作,死锁解除采用枚举的方法去尝试调整等待队列中进程的等待先后拓扑顺序,试图找到一种打破进程之间循环等待的状态。(1) 死锁处理相关数据结构的初始化每个服务进程启动的时候都需要初始化死锁检测原创 2021-12-13 20:32:07 · 1188 阅读 · 0 评论 -
postgreSQL——并发控制实现3
2021@SDUSC目录概述RegularLockRegularLock 的存储RegularLock 的数据结构(1)锁方法表(2)加锁对象标识(3)加锁对象描述体(4)锁持有者信息描述体(5)本地锁表RegularLock的主要操作(1) RegularLock 的空间计算(2) RegularLock 的初始化(3) RegularLock 加锁(4) RegularLock 的释放(5) RegularLock 的申请(6) R..原创 2021-12-04 22:22:25 · 432 阅读 · 0 评论 -
postgreSQL——并发控制实现 2
概述上周分析了并发控制的脏读、不可重复读和幻读三种SQL在并行的事物之间避免的现象,这周将分析一下postgreSQL中的三种锁即SpinLock,LWLock,RegularLock。SpinLockstatic voids_lock_stuck(const char *file, int line, const char *func){ if (!func) func = "(unknown)";#if defined(S_LOCK_TEST) fpr...原创 2021-11-29 20:34:08 · 1019 阅读 · 0 评论 -
postgreSQL——并发控制实现机制1
2021@SDUSC目录概述PostgreSQL 的并发控制PostgreSQL中定义的两种隔离级别PostgreSQL 中的三种锁SpinLockLWLockLWLock的数据结构总结概述上周结束了postgreSQL的事务处理源码分析,这个周分析一下PostgreSQL并发控制的实现机制。PostgreSQL 的并发控制PostgreSQL中存在多个会话试图同时访问同一数据的情况,并发控制的目标就是保证所有会话高效地访问,同时维护数据完...原创 2021-11-21 16:55:19 · 1438 阅读 · 0 评论 -
postgreSQL——事务分析6
概述关系型数据库经典的两阶段提交协议在postgreSQL中的实现原理。两阶段提交查看文档发现PostgreSQL使用两阶段提交来支持分布式数据库的事务处理。在分析postgreSQL事务处理之前,先回顾一下典型分布式数据库事务处理:A在银行1的账户上有$100.B在银行2的账户上有$50.A转账$25给B.如果“转账”的动作由于某些原因失败,A和B的账户应该不会发生改变。但是由于银行1和银行2的数据库不同,简单直接地进行事务处理无法满足要求,因为“A转账$25给B”的操作可以分解原创 2021-11-14 20:32:29 · 1159 阅读 · 0 评论 -
postgreSQL——事务处理4
2021SC@SDUSC目录概述事务操作函数启动事务总结概述上一周分析了postgreSQL事务中底层事务的数据结构,这一周打算分析一下和事务状态相关的事务操作函数。之前分析过改变事务块状态的函数(BeginaTransactionBlock,EndTransactionBlock,UserAbortTransaction),但仔细看一下代码就可以发现这些函数没有做实际的事务操作。经过分析,实际的事务操作应该是由以下函数完成:AbortTransaction,CleanupTra原创 2021-10-27 09:59:05 · 368 阅读 · 0 评论 -
postgreSQL——事务处理3
2021@SDUSC目录概述TransactionStateData1)nestingLevel2)gucNestLevel3)curTransactionOwner4)preUser总结概述上一周分析了事务系统上层事务块的操作,主要涉及事务执行的入口和出口的相关处理。这一周,我分析postgreSQL源码整理了一下事务进入到底层事务之后的具体处理过程。大致分析了一下后发现postgreSQL关于底层事务的处理主要包括三大部分:资源和锁的获取及释放、信号的处理、日志.原创 2021-10-22 22:22:04 · 454 阅读 · 0 评论 -
postgreSQL——事务分析2
2021SC@SDUSC上一篇分析了postgreSQL实现的总体概述,这个周想要分析一下针对事务处理的上层有关事务具体实现的函数解析。概述在postgreSQL中,一个事务块包含多个事务,所以事务块的状态数量要比底层事务的状态数量多的多。在postgreSQL的事务处理层次中,位于事务系统上层的是事务块。postgreSQL执行一条语句前会调用StartTransactionCommand函数,执行结束时会调用CommitTransCommand函数。如果命令执行失败,则会调用AbortC原创 2021-10-16 09:13:13 · 331 阅读 · 0 评论 -
PostgreSQL——事务分析
2021SC@SDUSC目录事务简介事务块上层事务底层事务总结事务简介PostgreSQL作为开源的关系型数据库需要实现的一大功能是事务与并发处理机制,在源码分析中,我就负责分析这一部分。下面我想要浅谈postgreSQL中的事务概念以及大体的实现方法。一次事务的要点就是它把多个步骤捆绑成了一个单一的操作。其它并发的事务是看不到在这些步骤之间的中间状态的,并且如果发生了一些问题,导致该事务无法完成,那么所有这些步骤都对数据库造不成任何影响。Postg...原创 2021-10-09 12:37:41 · 774 阅读 · 0 评论 -
postgreSQL源码安装及分析综述
目录源码安装源码分析分工情况事务和并发控制源码安装在队长的帮助下,我成功在Linux虚拟机上完成了postgreSQL的源码安装,包括下载,解压,编译,安装,初始化,启动几项流程。源码分析经过小组讨论和分析,大家一致认为postgreSQL的核心部分在于SQL功能的实现。主要源码之后经过讨论分析我们小组一致认为postgreSQL源码的核心部分在后端处理即backend文件夹中access ...原创 2021-09-29 13:40:47 · 224 阅读 · 0 评论