首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
PostgreSQL
Foucus
创建于2022-03-23
订阅专栏
PostgreSQL技术学习研究
等 6 人订阅
共142篇文章
创建于2022-03-23
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
PostgreSQL内核开发——使用SPI创建C函数
说明: 服务器编程接口(SPI)给予用户定义C函数编写者在其函数内运行SQL命令的能力。SPI是一组接口函数,它们可以简化对解析器、规划器和执行器的访问。SPI也做一些内存管理。我们可以使用这些SPI来编写C函数来实现运行SQL的功能。2、然后编写C文件 vi myupdate....
PostgreSQL 13新特性:增强GIN索引逻辑推理能力
pg12查询: 观察下面这个查询中and前后的两个条件,我们可以发现满足前面一个条件必然满足第二个条件。在pg12中需要10ms。Bitmap Heap Scan on tt1 (cost=12023.71..12025.02 rows=1 width=37) (actual t...
PostgreSQL、oracle、mysql中MVCC机制详解
1.1、事务隔离级别 MVCC,Multi-version Concurrency Control ,顾名思义指的是多版本并发控制。read uncommitted:脏读,一个事务可以读到另外一个事务未提交的数据,大多数关系型数据库不支持。read committed:提交读,一...
PostgreSQL使用hash分组进行分页优化
我们在使用数据库进行分页查询时,随着offset过滤的数据越来越多,查询也会越来越慢,因为即使你只通过查询获取1条记录也需要遍历offset过滤掉的数据。 一般来说可以通过在表中建立“位点”的方式去优化这类分页查询,但是某些情况下我们可能没法在表上建立“位点”。我们在表t的inf...
PostgreSQL 虚拟列(Generated columns)
PostgreSQL12开始引入了Generated columns,用来创建虚拟列。虚拟列是表达式,表达式中只能引用本表的非 generated column 字段,不可以引用其它表的字段,且必须使用immutable类型的表达式和操作符。说明: A generated col...
PostgreSQL数组如何去除交集
PostgreSQL中支持多种类型的数据类型,其中数组类型在pg中也是被频繁使用的一种,我们可以定义某列为变长多维数组。 对于数组的去除交集我们的思路大致为: 1、先把数组转换成字符串; 2、将字符串的元素拆分然后进行去除交集; 3、将获得的字符串转换成数组。例子: 我们使用上述...
PostgreSQL兼容oracle rman备份——pg_rman
PostgreSQL支持多种备份数据的方式,如:SQL转储、文件系统级备份、连续归档。但是相较于oracle,oracle自带的rman备份工具是非常强大的,早就已经支持全量、增量、归档的备份模式,支持压缩等。 postgresql可以通过pg_rman插件来实现类似oracle...
PostgreSQL实现字符串运算的隐式转换(兼容oracle)
在oracle中,我们如果对两个字符串类型的数字进行加减之类的运算,oracle可以自动将其转换成数值然后进行运算(估计有很多人也碰到过因为这个隐式转换导致查询不走索引之类的问题。。。)。 但是在pg中是不会自动进行转换的,我们查看数据库中默认的cast,可以发现没有text或者...
PostgreSQL select for update指定列(兼容oracle)
我们可以使用select for update语句来指定锁住某一张表,在oracle中我们可以在for update语句后指定某一列,用来单独锁定指定列的数据。Table created.Table created.1 row created.1 row created.1 ro...
PostgreSQL时间计算函数NUMTODSINTERVAL(兼容oracle)
oracle中的时间计算函数NUMTODSINTERVAL和NUMTOYMINTERVAL经常会被使用,可以让我们将数字转换成时间间隔类型的数据。 Table created.在PostgreSQL中,我们想要将数字转换成时间间隔类型并不需要进行使用函数转换,在pg中自带了int...
PostgreSQL全局临时表(pgtt)——兼容oracle
PostgreSQL中的临时表是会话级别的,即在会话结束后会自动被删除,或者可以设置为事务级别的,即在事务结束后自动被删除。也就是说不支持oracle的全局临时表的功能,除此之外,Oracle全局临时表是可以指定SCHEMA的,而PostgreSQL的临时表不能指定SCHEMA,...
Postgresql监控操作系统指标(file_fdw)
proc是Linux系统下一个很重要的目录。 它跟/etc, /home等这些系统目录不同, 它不是一个真正的文件系统, 而是一个虚拟的文件系统。 我们可以通过查看proc目录下的文件来获取操作系统的一些信息,例如内存使用情况, cpu使用情况等等。但是我们怎么在postgres...
Postgresql操作系统监控插件——system_stats
system_stat是postgresql的一个插件,可以用来监控操作系统级别的信息,适用于Linux、MacOS和Windows。下载地址:https://github.tar -zxvf system_stats-1.0.tar.cd system_stats-1.pg_s...
Postgresql限制用户登录错误次数
在oracle中我们可以通过设置FAILED_LOGIN_ATTEMPTS来限制用户密码登录错误的次数,但是在postgresql中是不支持这个功能的。尽管PostgreSQL支持event trigger,可是event局限于DDL,对于登录登出事件是没办法使用event tr...
Greenplum行列转换——tablefunc
行列转换是数据库查询中比较常见的一种需求,在Greenplum这种偏向OLAP场景的数据库中更是比较常见了。那么我们如何在gp中实现行列转换呢?我们可以使用postgresql的tablefunc扩展在gp中来直接实现行列转换的功能。 不过在gp中并不像postgresql那样自...
PostgreSQL 认证方式详解
PostgreSQL提供多种不同的客户端认证方式。被用来认证一个特定客户端连接的方法可以基于(客户端)主机地址、数据库和用户来选择。这里我们介绍一些常用的认证方式。一般当我们安装完PostgreSQL时可以发现,系统为我们创建好了一个名为Postgres的用户和一个名为Postg...
PostgreSQL ——如何在Linux中编译和运行C程序
PostgreSQL是用C编写的,因此安装PostgreSQL软件本质上不过是编译和运行源代码中所有的C程序。 想要使用PostgreSQL内部组件,强烈建议学习C编程的基础知识。首先我们创建一个名为first.[root@prim final]# cat first.#incl...
PostgreSQL执行Configure、Make和Make install时都发生了什么
.别急,读完这篇文章你就自然会明白了。PostgreSQL是用C编写的,因此安装PostgreSQL软件其本质上不过是编译和运行源代码中的所有C程序。 我们先来看看下面这个例子。1、首先创建一个名为first.c的程序 [root@ison2 cmi]# cat first.#i...
MMAP vs POSIX:PostgreSQL动态共享内存
-rw------- 1 postgres postgres 6928 Feb 17 16:36 mmap.PostgreSQL数据目录下的pg_dynshmem子目录中有这样一个文件。在我们解答这个问题之前,我们将必须了解一些基础知识。如果你想从实践上快速理解这些内容,那么我强...
如何在PostgreSQL中获取awr报告
AWR报告全称Automatic Workload Repository,自动负载信息库,是一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据,熟悉Oracle的人想必都不陌生。 可是在postgresql中并没有AWR这一功能,不过我们可以通过自定义一些监控脚本来实现...
下一页