在 PostgreSQL 数据库中,relation 关联的所有信息存储在几个不同的 forks 里面,每个 fork 都包含一个特定类型的数据。首先一个 fork 表示一个文件,它的文件名由一个数字 ID(oid)表示,可以通过对应于 f...
- 2022-12-20 11:09:38
- 浏览(2173)
- 分类:PostgreSQL源码分析
psql 和 pg_dump 等工具连接PostgreSQL数据库时,通过-W参数,在终端以交互方式输入密码,很多时候,我们希望使用脚本调用psql或者pg_dump做一些自动化的操作,那么此时如何以非交互方式指定密码?方法一,环境变量设置...
- 2022-12-08 19:26:01
- 浏览(3339)
- 分类:PostgreSQL基础教程
源码文件:src/backend/access/transam/subtrans.c源码版本:PG 13.31. 子事务的使用PG 提供了一组 savepoint 相关的命令用于子事务操作,子事务相关例子如下:定义一个保存点:savepoi...
- 2022-12-07 17:15:10
- 浏览(3158)
- 分类:PostgreSQL源码分析
源码版本:PG 13.3源码文件:dsm.c dsm_impl.cPostgreSQL 是基于进程模型的数据库内核实现,进程之间的通信、数据传输通常需要借助共享内存实现。在程序运行过程中,比如并发任务需要创建多个工作进程,工作进程与 bac...
- 2022-10-11 11:17:18
- 浏览(3160)
- 分类:PostgreSQL源码分析
源码版本:PG 13.3源码文件:slot.c slotfuncs.c1. 什么是 PG 复制槽?PG 复制槽用于记录主备流复制的状态,主要目的是防止 wal 日志被过早的删除,导致备库流复制中断。复制槽是有状态的,能够持久化到磁盘上,允许...
- 2022-09-19 13:48:15
- 浏览(835)
- 分类:PostgreSQL源码分析
源码版本:PG 13.3源码文件:src/backend/utils/time/snapmgr.c1. 事务快照数据结构typedef struct SnapshotData{SnapshotType snapshot_type; /* t...
- 2022-09-16 22:28:47
- 浏览(586)
- 分类:PostgreSQL源码分析
源码版本:PG 13.3PG 支持两阶段提交事务(2PC),本文基于 PG 13.3 源码,简单分析 2PC 事务处理相关的逻辑。1. 两阶段事务提交的处理过程2PC 各阶段的命令调用主要包含如下三个:prepare trancation ...
- 2022-08-25 17:46:45
- 浏览(624)
- 分类:PostgreSQL源码分析
PostgreSQL 支持触发器功能,触发器与表或者视图进行关联,当表或者视图上的某个事件发生时,指定的触发器函数将被调用。触发器语法:CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER ...
- 2022-08-15 10:38:42
- 浏览(626)
- 分类:PostgreSQL基础教程
PostgreSQL 提供了 copy 命令用于在数据库表与文件之间拷贝数据,通过 copy 命令可以把一个表数据导出到文件中,也可以把文件中的数据导入到表里面。1. copy 命令语法COPY table_name [ ( column_...
- 2022-08-12 15:51:55
- 浏览(595)
- 分类:PostgreSQL基础教程
psql 工具提供了一个方便的命令 \o 能够把 SQL 执行的输出信息重定向到文件中。使用示例:postgres=# \o /tmp/1.txtpostgres=# select * from t;postgres=# \o\o /tmp...
- 2022-08-04 21:41:05
- 浏览(656)
- 分类:PostgreSQL基础教程