PostgreSQL的数据存储(十六)---数据存储

5 并发访问与存储关系

数据库系统需要支持并发访问。并发访问,要访问数据,而数据存在与buf中,所以,对于buf的读写,就需要有并发访问控制。PG通过锁和缓存页面标志(pin和reference)来控制并发访问。这样的方式,出于逻辑IO层。

尽管物理IO位于buf层下,但是,存储层的访问,也还是存在并发导致的冲突可能。PG处理存储层的并发冲突,是通过锁来控制磁盘文件操作、对临界区加锁保证对文件访问的互斥,从而保护文件不被并发访问所破坏。

这样的操作,其实是刷出数据的时机和何时需要读数据到缓存这两种操作发生时的情况下进行的。

6 与存储相关的事务处理

在存储层,与事务直接相关的操作,如下:

与单个事务相关

与事务和某特殊进程相关

与主进程相关

AtEOSubXact_Files

CommitSubTransaction

AbortSubTransaction

AtEOXact_Files

BackgroundWriterMain

WalWriterMain

CommitTransaction

PrepareTransaction

AbortTransaction|

AtProcExit_Files

InitFileAccess

在事务提交或结束时,清理一些临时文件等相关内容

在事务提交或结束时,在缓存写出进程、日志刷出进程结束前,清理一些临时文件等相关内容

在InitFileAccess 函数中,注册一个钩子函数,当pg主进程退出时,需要做一些文件清理工作,调用如下:

on_proc_exit(AtProcExit_Files, 0);

其他与事务相关的操作,分散在了缓存层、数据访问层等。可以简单认为:数据库的数据处理逻辑,基本上落在了数据缓存层及之上各层功能中,与处于底层的数据据存储层,实则关系不是很大(只是简单认为,这样想,有助于理解分层后的数据存储层)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值