当前位置:首页 > 报告详情

5-文一 PostgreSQL Latch 简介:一种事件实现机制.pdf

上传人: 张** 编号:155491 2024-02-15 12页 806.07KB

1、PostgreSQL Latch 简介一种事件实现机制文一应急管理大学 在读本科生PostgreSQL Latch 简介Latch 模块在 PostgreSQL 扮演着事件处理框架的角色,被应用于处理与响应:客户端的接入与退出主进程状态变化、通知 walwriter 写入 wal 日志一些其它的事件(比如,等待超时)而在这一次技术报告中,我将向就 Latch 模块的理论基础、事件对象及工作流程展开讨论,期待促进大家对 Latch 模块的理解。PostgreSQL Latch 理论基础在 Latch 模块中,三类角色在各自的领域承担起了事件处理的工作:事件传递者事件的传递者负责事件的递达与传输,

2、是事件通知者与事件监听者的沟通桥梁,它与 Latch 所依托的系统接口息息相关。事件通知者事件通知者需要在事件发生的时候,主动在“事件集合”中发送通知以“唤醒”事件监听者,由此展开事件处理的工作。事件监听者事件监听者会“等待”事件的发生,在事件通知者引发“事件集合”的状态变化,进而使得自身“被唤醒”之后,主动展开事件的处理。PostgreSQL Latch 理论基础无论应用的场景有多么广泛,Latch 模块本质上只需要应对两种类型的事件:内部事件内部事件就是由服务器端自主处理即可响应完成的事件,典型的案例就是在 postmaster 进程退出时,主进程借助 Latch 模块的接口唤醒所有的子进

3、程,以此让 PostgreSQL 退出时所需要做的资源清理工作顺利完成。外部事件外部事件需要由“客户端-服务器”共同负责,典型的案例就是客户端接入时,保持着事件等待状态的服务端被唤醒,由此展开后续的会话建立工作。PostgreSQL Latch 实现原理Latch 模块依托于系统接口而实现,PostgreSQL 会根据编译时的选项选择对应的实现方案:poll(Unix)epoll(Linux)kqueue(BSD)Event(Windows)在这次技术演讲中,我将把咱们的关注点,放置于“基于 Linux Epoll 模型实现的 Latch 版本”,因为 Linux Epoll 应用广泛,知名度

4、高。Linux Epoll 编程接口Epoll 接口负责对一组文件的状态展开检测:Linux I/O 模型在 Linux 中,所有的设备都被抽象为“文件”,设备的状态变化体现为“文件”的状态变化。进程通信机制(IPC)进程之间、进程内部可以通过信号、管道、信号描述符(signal fd)等进程通信机制展开信息交流,这些机制可以作为事件通知的基础设施而被使用。Epoll 允许携带自定义的数据(User Data)在注册监听设备的同时,我们可以同时提供自定义的数据,如此就可以让我们的工作能够契合更丰富的场景。PostgreSQL Latch 事件对象在 Latch 模块的工作之中:WaitEven

5、tSet 负责整合 Latch 变量与 WaitEvent,将其文件描述符集合集体整合到一起,与 Epoll 等接口通信WaitEvent 包含在 epoll 接口的“用户自定义数据”中,在文件描述符状态发生变化以后,随描述符一并返回Latch 变量会包含在一个等待事件集合之中,作为一个标记值而存在。PostgreSQL Latch 自定义事件的工作原理PostgreSQL 的自定义事件分为三种基本的操作:SetLatch让 PostgreSQL 发送信号(在 Linux 下,为 SIGURG),让对应的文件描述符状态发生变化,进而结束 PostgreSQL 的事件等待状态,让 Postgre

6、SQL 转向事件处理,并将事件等待集合(WaitEventSet)中的 Latch 变量标记为 trueResetLatch对 Latch 变量进行重置,将其标记为 false,代表没有事件发生WaitLatch调用 epoll 或其它系统接口(不会直接调用,调用的是中间层接口),等待 Latch 被设置(PostgreSQL 有一个专门的 LatchWaitSet 全局变量,负责单纯的自定义事件等待)PostgreSQL Latch 客户端相关事件的工作原理客户端相关事件,

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了PostgreSQL数据库中的Latch机制。Latch是一个事件处理框架,用于处理客户端接入与退出、主进程状态变化、walwriter写入wal日志等事件。Latch模块中有三类角色:事件传递者、事件通知者和事件监听者。事件传递者负责事件的传输,事件通知者在事件发生时发送通知,事件监听者等待事件发生并进行处理。PostgreSQL Latch模块根据编译时的选项选择不同的系统接口实现,如poll、epoll、kqueue和Event。本文重点讨论了基于Linux Epoll模型实现的Latch版本。Latch事件对象包括WaitEventSet、WaitEvent和Latch变量。自定义事件的工作原理包括SetLatch、ResetLatch和WaitLatch操作。客户端相关事件是由客户端程序与服务器程序共同决定,经由操作系统进行通知的事件。总之,PostgreSQL Latch模块是一种通用的事件处理框架,在客户端响应和自定义事件处理中起着重要作用。
PostgreSQL Latch 如何处理客户端事件? PostgreSQL Latch 的工作原理是什么? 如何深入理解PostgreSQL Latch的事件处理机制?
客服
商务合作
小程序
服务号
折叠