自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 PostgreSQL视图原理分析(3)视图原理

PG 视图依赖于规则系统进行工作,规则系统处于 和 之间,它接受单个查询树 ,返回一个查询树链表。如下图所示,规则系统位于 函数中。该函数会先对查询进行重写,然后对重写后的查询应用相应的规则。查询分析阶段 - 将所有的 转换为查询树结构体 ,以便查询重写 - 和查询规划 - 阶段做进一步的处理。 结构体定义如下:这个结构体很大,重点介绍一些重要的字段:举个例子来看看 PG 的 VIEW 是如何工作的,前提准备:视图的创建对于视图 :前面说过,视图是使用规则系统实现的,上面的语句相当

2025-06-10 19:26:02 862

原创 PostgreSQL视图原理分析(2)规则系统

操作时,做一些额外的动作,是不是和触发器很像?但它和触发器是完全不同的两个概念。规则系统是一种对 SQL 语句进行转换的机制,它在语句真正被执行之前触发。视图依赖于规则系统进行工作,规则系统定义了一系列的规则,用于指导查询重写模块如何对一个查询进行重写。的规则系统允许用户在对表 Table 做。系统表下,如果一个表或者视图在。,将用户定义的重写规则应用于。,然后输出零个或者多个查询树。中有任何的重写规则,那么。属性必须为 true。

2025-06-10 19:24:54 139

原创 PostgreSQL视图原理分析(1)如何使用

PostgreSQL可以使用来替换已经存在的视图,但目前 PG 对 REPLACE VIEW 的限制有点多,新查询产生的列必须与旧查询的列,在顺序上一致、列的名字上一致且列的类型一致,给 VIEW 增加新的列是允许的。不像ORACLE,可以使用任意的查询替换旧的VIEW。

2025-06-10 19:23:55 534

原创 PostgreSQL体系结构

PostgreSQL在initdb后,会初始化三个初始数据库,即 template0、template1和 postgres。PostgreSQL的通过复制模版数据库来工作,会将模版数据库中的所有对象拷贝一份到新的数据库中,默认的模版数据库就是template1。template1初始时包含系统预定义的一些对象,包括系统表和视图、系统函数、系统索引、系统权限和参数等对象。template1是可修改的,你可以向其添加任何对象,这样你添加的对象会在创建新数据库时拷贝到新数据库中。

2025-06-10 19:22:43 501

原创 PostgreSQL系统表-pg_class

创建出来的普通表,也可以是 PG 内部的系统表,也可以是其它包含有列类型的对象,例如:索引、序列、视图、物化视图、复合类型、TOAST表,PG 将这些可以存储在 pg_class 中的对象称为。类型化表的结构与其关联的复合类型完全相同,而且它们的行在逻辑上被视为该复合类型的实例。PG 可以基于复合类型来创建表,这种表称为类型化表(Typed Table)。存储具有表结构的对象的一些系统信息,具有表结构的对象可以是用户。属性还有很多,暂不介绍了。应该为0,对于类型化表,

2025-06-10 19:18:36 236

原创 什么是Semi Join和Anti Join

首先要明白SQL语法为我们提供了INNER JOINOUTER JOIN这样的语法,这是 SQL 语法提供的支持。数据库使用关系代数为数据库的数据结构进行建模,关系代数为关系数据库提供了理论基础,SQL 语言以关系代数为理论基础。关系代数提供了许多逻辑算子:选择,连接,投影等。这些算子是逻辑算子,他们并不是物理执行计划的一部分,优化器会针对这些逻辑算子生成相应的物理算子。

2025-06-03 21:57:05 865

原创 PostgreSQL角色与权限体系

PostgreSQL 中所有对象都有一个所有者(owner),通常为创建该对象的用户。对于大多数对象,只允许超级用户(superuser)或者所有者(owner)可以对对象执行操作,其它用户需要授予一定的权限(privileges)。只有超级用户或者当当前用户既是对象的 owner,又拥有 SET ROLE 到 new_owner 的权限的时候,才运行进行修改 OWNER 的操作。

2025-03-26 22:43:06 702

原创 PostgreSQL SPI接口

SPI,可以在 C 函数中调用 SPI 接口来方便的运行 SQL。SPI 是一组接口函数,可以访问parserplannerexecutor,此外 SPI 还有自己的内存管理。如果通过 SPI 调用的 SQL 失败,控制权不会返回给调用点,执行 C 函数的事物或者子事物将被回滚。SPI 的头文件在中,如果 SPI 函数调用成功,将返回一个 非负整数,否则返回负数或者 NULL。PG 中大多数过程语言底层都使用 SPI 进行开发。

2024-10-26 23:10:29 875

原创 PostgreSQL错误处理

大于等于 ERROR 级别的错误将不会返回到调用者处,会走 PG 的 TRY CATCH 逻辑,后续会讲到。在错误处理期间,还可能会产生新的错误,错误处理可能会嵌套,为了能够处理这种情况,PG 在栈上预分配了 5 个。当你的代码可能会通过抛出 ERROR 级别的错误时,如果你想对其进行捕获处理,就需要用。这些函数是不会出现这种 NULL 的情况的),就会直接发出一个 FATAL 的错误。保存上一层的错误捕获点,最上层的错误捕获点在进程启动时设置,的 else 逻辑,这就完成了错误的捕获。

2024-10-26 23:08:44 1214

原创 CLion配置远程开发

这种远程开发的模式下,本地会运行一个CLion实例,源代码会存储在本地机器,通过SSH与远程机器进行连接,CLion会使用rsync自动将本地的源代码同步到远程机器。CLion会使用远程机器的工具链(GDBCMake/make…)将你的源代码编译,运行。

2023-10-19 22:30:16 3615

原创 Docker相关命令

systemctl。

2023-10-19 22:23:18 428

原创 NVMe笔记

1 相关概念1.1 Controller控制器Controller是NVM子系统和主机host之间通信的接口,有三种类型的Controller:I/O controllerdiscovery controlleradministrative controllerController和主机host之间通过队列对来通信。Controller执行主机host下发到Submission Queue中的命令,执行完毕后将命令的执行结果放到Completion Queue中。所有的三种类型Control

2022-05-14 17:53:54 4223 1

原创 NVMeOF笔记

1. 基本概念1.1 CapsuleNVMeoF使用 Capsule 来进行数据传输,有两种 Capsule ,1) command capsule,2)response capsule。command capsule包含一个SQE(它是对NVMe over PCIe中SQE的修改和扩展)和一个可选的数据或SGL部分。command capsule由主机下发给NVM SubSystem,最少要包含一个SQE,也就是64Byte。SQE中包含主机下发给NVM SubSystem的命令,NVMeoF中有

2022-05-14 17:51:48 4293 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除