标签: PG内核
中译版《PostgreSQL 14 Internals》上线

原作者:熊灿灿 · 微信公众号转载页 前言 各位 PGer 大家好,在此很高兴地告诉各位 ——《PostgreSQL 内参:深入解析运行原理》正式发布了。从最开始萌生翻译成册的想法,再到现今电子版书籍的正式发布,期间磕绊无数,但好在结果是喜人的,三年磨一剑,《PostgreSQL 14 Internals》中文版终于如期而至,各位可以通过 🔗:https://postgres-internals.cn[1] 进行访问,原计划在元旦发布,思考良久,最终还是决定提前与各位见面。对于中文版的发布,原 …
原作者:熊灿灿 · 微信公众号转载页 前言 各位 PGer 大家好,在此很高兴地告诉各位 ——《PostgreSQL 内参:深入解析运行原理》正式发布了。从最开始萌生翻译成册的想法,再到现今电子版书籍的正式发布,期间磕绊无数,但好在结果是喜人的,三年磨一剑,《PostgreSQL 14 Internals》中文版终于如期而至,各位可以通过 🔗:https://postgres-internals.cn[1] 进行访问,原计划在元旦发布,思考良久,最终还是决定提前与各位见面。对于中文版的发布,原 …
中国的开源运动再次到了十字路口

原作者:魏永明 · 微信公众号转载页 国产数据库到底能不能打? 国产数据库是大炼钢铁吗? 中国对PostgreSQL的贡献约等于零吗? 机场出租车恶性循环与国产数据库怪圈 EL系操作系统发行版哪家强? 基础软件到底需要什么样的自主可控? 分布式数据库是伪需求吗? 近几日,几个国产操作系统厂商/社区发起了一个倡议《开源生态发展合作倡议》。倡议的内容不多,共三条,除了第一条之外,其他两条算是口号,不提也罢。但从第一条所述内容看来,笔者隐隐感觉到了一丝不安: 一是推动操作系统内核等关键共性技术链统一 …
原作者:魏永明 · 微信公众号转载页 国产数据库到底能不能打? 国产数据库是大炼钢铁吗? 中国对PostgreSQL的贡献约等于零吗? 机场出租车恶性循环与国产数据库怪圈 EL系操作系统发行版哪家强? 基础软件到底需要什么样的自主可控? 分布式数据库是伪需求吗? 近几日,几个国产操作系统厂商/社区发起了一个倡议《开源生态发展合作倡议》。倡议的内容不多,共三条,除了第一条之外,其他两条算是口号,不提也罢。但从第一条所述内容看来,笔者隐隐感觉到了一丝不安: 一是推动操作系统内核等关键共性技术链统一 …
PG先写脏页还是先写WAL?

昨天在群里遇到一个有趣的关于 PostgreSQL 的问题: ”写脏数据页和写入WAL缓冲区的先后顺序是什么?“ 我们都知道, WAL 就是 Write Ahead Log / 预写式日志 的缩写,那从逻辑上说,好像是先写 WAL 再写数据页才对。 但其实这个问题有趣在,写入其实是发生在两个地方的:内存与磁盘。而这对这两者的写入顺序是不一样的:在内存中,先写脏数据页,再写 WAL记录。在刷盘时,先刷 WAL 记录,再刷脏数据页。 我们可以用一个简单的例子来说明,当你执行一条 INSERT 时到底 …
昨天在群里遇到一个有趣的关于 PostgreSQL 的问题: ”写脏数据页和写入WAL缓冲区的先后顺序是什么?“ 我们都知道, WAL 就是 Write Ahead Log / 预写式日志 的缩写,那从逻辑上说,好像是先写 WAL 再写数据页才对。 但其实这个问题有趣在,写入其实是发生在两个地方的:内存与磁盘。而这对这两者的写入顺序是不一样的:在内存中,先写脏数据页,再写 WAL记录。在刷盘时,先刷 WAL 记录,再刷脏数据页。 我们可以用一个简单的例子来说明,当你执行一条 INSERT 时到底 …
前后端通信线缆协议

了解PostgreSQL服务器与客户端通信使用的TCP协议 启动阶段 启动阶段的基本流程如下所示: 客户端发送一条 StartupMessage (F) 向服务端发起连接请求 载荷包括 0x30000 的Int32版本号魔数,以及一系列kv结构的运行时参数(NULL0分割,必须参数为 user), 客户端等待服务端响应,主要是等待服务端发送的 ReadyForQuery (Z) 事件,该事件代表服务端已经准备好接收请求。 上面是连接建立过程中最主要的两个事件,其他事件包括包括认证消息 …
了解PostgreSQL服务器与客户端通信使用的TCP协议 启动阶段 启动阶段的基本流程如下所示: 客户端发送一条 StartupMessage (F) 向服务端发起连接请求 载荷包括 0x30000 的Int32版本号魔数,以及一系列kv结构的运行时参数(NULL0分割,必须参数为 user), 客户端等待服务端响应,主要是等待服务端发送的 ReadyForQuery (Z) 事件,该事件代表服务端已经准备好接收请求。 上面是连接建立过程中最主要的两个事件,其他事件包括包括认证消息 …
并发异常那些事

并发程序很难写对,更难写好。很多程序员也没有真正弄清楚这些问题,不过是一股脑地把这些问题丢给数据库而已。并发异常并不仅仅是一个理论问题:这些异常曾经造成过很多资金损失,耗费过大量财务审计人员的心血。但即使是最流行、最强大的关系型数据库(通常被认为是“ACID”数据库),也会使用弱隔离级别,所以它们也不一定能防止这些并发异常的发生。 比起盲目地依赖工具,我们应该对存在的并发问题的种类,以及如何防止这些问题有深入的理解。 本文将阐述SQL92标准中定义的隔离级别及其缺陷,现代模型中的隔离级别与定义这 …
并发程序很难写对,更难写好。很多程序员也没有真正弄清楚这些问题,不过是一股脑地把这些问题丢给数据库而已。并发异常并不仅仅是一个理论问题:这些异常曾经造成过很多资金损失,耗费过大量财务审计人员的心血。但即使是最流行、最强大的关系型数据库(通常被认为是“ACID”数据库),也会使用弱隔离级别,所以它们也不一定能防止这些并发异常的发生。 比起盲目地依赖工具,我们应该对存在的并发问题的种类,以及如何防止这些问题有深入的理解。 本文将阐述SQL92标准中定义的隔离级别及其缺陷,现代模型中的隔离级别与定义这 …