`

PostgreSQL启动过程中的那些事十九:walwriter进程二

阅读更多

 

3

这节主要讨论 walwriter 进程到了 WalWriterMain ,设置合适的信号处理句柄, 创建一个资源属主以保持对本进程资源的跟踪 创建一个本进程的所有工作都在其内做的内存上下文 "Wal Writer" ,创建这个内存上下文是为了本进程在错误恢复期间能重置 context 并且因此避免可能的内存泄漏。 设置错误跳跃点。接着不堵塞信号(当 postmaster 进程 fork 本进程时用 PG_SETMASK(&BlockSig) 堵塞了他们)。然后进入无限循环,检查并处理任何请求或者最近收到的信号。然后调用 XLogBackgroundFlush 把相应 XLOG 写入事务日志文件。 然后睡眠指定时间后再接着循环。

 

 

WalWriterMain 方法的调用序列图

 

 

下面时 WalWriterMain 流程图

 

 

WalWriterMain 流程图

 

WalWriterMain 中主要是 调用 XLogBackgroundFlush 把相应 XLOG 写入事务日志文件。在 XLogBackgroundFlush 里,判断如果需要写( 1 不在恢复过程中, 2 XLOG 写请求位置 WriteRqstPtr 在上次写 XLOG 结果的刷出位置 LogwrtResultg.Flush 的后面) XLOG 日志,调用 XLogWrite 方法, 写和 / 或文件同步 xlog 日志 至少到 WriteRqst 指明的位置,这是通过调用 write issue_xlog_fsync 完成的,最后到了操作系统的 write sync 接口。




------------
转载请著明出处,来自博客:
blog.csdn.net/beiigang
beigang.iteye.com

  • 大小: 54.2 KB
  • 大小: 35 KB
0
1
分享到:
评论

相关推荐

    PostgreSQL中文手册9.2

    一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: . 50 PostgreSQL PostgreSQL...

    关于PostGreSQL中的存储过程

    其中,存储过程是一个非常重要的概念,本文将对 PostgreSQL 中的存储过程进行详细的介绍和解释。 什么是存储过程 存储过程是一组为了完成特定任务而编写的 SQL 语句集合。它可以将复杂的操作封装起来,以便于重复...

    Postgresql存储过程

    Postgresql存储过程是指在Postgresql数据库中定义的一组SQL语句的集合,它可以完成复杂的操作,并且可以重复使用。Postgresql存储过程可以用来实现业务逻辑,减少数据库服务器的压力和网络传输的数据量。 一、存储...

    PostgreSQL 存储过程调试

    在IT行业中,数据库管理系统是核心组件之一,而PostgreSQL作为一款开源、强大的对象关系型数据库系统,被广泛应用于各种业务场景。本篇文章将深入探讨如何对PostgreSQL的存储过程进行调试,这对于优化数据库性能和...

    Go-PostgreSQLBGWorker用Go编写的PostgreSQL后台工作进程

    在PostgreSQL中,BGWorker是用户定义的后台进程,它们不是作为数据库服务器的一部分启动,而是由服务器启动并在需要时执行特定的任务。这种设计使得BGWorker能够执行长时间运行的操作,而不阻塞主线程或影响其他...

    postgresql--内核分析--多进程结构

    ### PostgreSQL内核分析——多进程结构 #### 一、进程的理解与创建 进程是一个正在运行的程序实例,它具有动态的特性。对于程序员而言,所编写的代码在未经编译之前仅是静态的源代码。当这些代码经过编译、链接等...

    Linux下PostgreSQL安装与开机启动

    ### Linux下PostgreSQL安装与开机启动详解 #### 1. 添加用户及创建目录 为了确保PostgreSQL服务的安全性,我们通常会为它创建一个独立的系统用户。这一步骤包括了用户创建、密码设定以及相关目录的搭建。 ##### ...

    PostgreSQL 14.1 中文手册

    PostgreSQL 14.1 手册 PostgreSQL 全球开发组 翻译:彭煜玮1,PostgreSQL中文社区2文档翻译组

    Postgresql存储过程.docx

    PostgreSQL 存储过程中的连接字符不是 `+`,而是使用 `||`。例如: ``` str := 'hello' || 'world'; ``` 四、控制结构 PostgreSQL 存储过程支持多种控制结构,包括条件语句、循环语句和跳转语句。 1. 条件语句 ...

    postgresql存储过程

    PostgreSQL存储过程是一种数据库编程的方法,它允许用户在数据库中定义和执行复杂的操作逻辑,而不仅仅是简单的查询。存储过程在数据库管理系统中起着至关重要的作用,它们可以提高性能,增加安全性,减少网络流量,...

    PostgreSQL内核分析

    在启动过程中,`postmaster`会执行一系列初始化操作,比如创建共享内存段、设置信号处理程序等。初始化完成后,通过`ServerLoop`函数进入循环状态,等待并处理来自客户端的连接请求。对于崩溃或异常终止的子进程,`...

    PostGreSQL安装部署系列:Centos 7.9 安装指定PostGreSQL-15版本数据库

    初始化数据库是PostgreSQL安装过程中必不可少的一步,可以通过执行以下命令完成: ```bash sudo /usr/pgsql-15/bin/postgresql-15-setup initdb ``` 初始化完成后,将会创建数据库目录并设置默认权限。 ##### 3.4...

    PostgreSQL_原理简介

    - **主进程 (Master)**:通常指的是 `postmaster` 进程,负责监听客户端请求,并启动后端进程处理这些请求。 - **后端进程 (Postgres)**:每个查询执行时都会启动一个独立的后端进程。 - **数据写入器 (Datawriter)*...

    postgresql-42.3.1-API文档-中文版.zip

    赠送jar包:postgresql-42.3.1.jar; 赠送原API文档:postgresql-42.3.1-javadoc.jar; 赠送源代码:postgresql-42.3.1-sources.jar; 赠送Maven依赖信息文件:postgresql-42.3.1.pom; 包含翻译后的API文档:...

    PostgreSQL博客1

    1. **postgres主进程**:这是启动数据库集群的父进程,负责管理其他子进程,如背景工作者和服务进程。 2. **后台工作者**:包括检查点进程、归档进程、统计收集器、Wal Writer等,它们执行各种后台任务,确保数据库...

    PostgreSQL修炼之道:从小工到专家

    PostgreSQL中国社区资深数据库专家、沃趣科技首席数据库架构师撰写,PostgreSQL数据库领域经典著作 系统讲解PostgreSQL技术内幕,深入分析PostgreSQL特色功能,包含大量来自实际生产环境的经典案例和经验总结 ...

    Postgresql-10安装包

    本文将详细介绍如何使用提供的 PostgreSQL-10 安装包进行安装,以及在安装过程中可能遇到的关键知识点。 **一、PostgreSQL 10 的特性** 1. **并行查询优化**:PostgreSQL 10 引入了并行查询功能,使得大型表的扫描...

    DB2到GreenPlum/PostgreSQL的转换指南

    - **存储过程**:DB2中的存储过程可能需要转换为GreenPlum/PostgreSQL中的存储过程或函数,因为后者的语法和行为有所不同。 #### 2.3 SQL谓词 SQL谓词是SQL语句中用来筛选结果集的关键部分,DB2与GreenPlum/...

    postgresql查询死锁以及杀死死锁进程sql.txt

    查询sql的死锁进程,查找并杀死。解决生产数据库中卡死的现象。postgresql查询死锁以及杀死死锁进程sql

    postgreSQL的CURD和存储过程

    本文将深入探讨PostgreSQL中的CURD操作以及存储过程,并结合jdbc、hibernate、ibatis三种不同的Java数据访问技术进行讲解。 **一、CURD操作** 1. **创建(Create)**:在PostgreSQL中,创建表是最基本的操作。例如,...

Global site tag (gtag.js) - Google Analytics