Recent Posts

PostgreSQL Oracle 兼容性之 - 字符串分割

1 minute read

背景 Oracle中字符串分割,比较麻烦,可能需要写PL/SQL来实现。 create or replace TYPE "STRINGS_TABLE" is table of varchar2(2000) create or replace FUNCTION highsoft_split( p...

PostgreSQL Linux 下 僵尸状态的处理

4 minute read

背景 在某些非常特殊的情况下,可能遇到数据库无法停库,也无法连接(几乎处于不可用状态)的情况。即使使用-m immediate这样的暴力停库都无法停下来。 例如,当数据库的某些用户进程进入了defunct状态时。 2951 20411 37111 0 14:28 ? 00:00:00 ...

PostgreSQL 11 preview - bloom filter 误报率评估测试及如何降低误报 - 暨bloom filter应用于HEAP与INDEX的一致性检测

15 minute read

背景 bloom filter是一个空间压缩,概率数据结构,可以存储超容量的数据集,用于判断某个元素是否存在于数据集中。但是bloom filter存在一定的错误率(当判断存在时,可能不存在,因为这个元素的bits可能被set了。但是当判断发现元素不存在时就一定不存在。) 例如A元素对应1,19,200,21等...

PostgreSQL 家谱、族谱类应用实践 - 图式关系存储与搜索

9 minute read

背景 最近《最强大脑》节目的国际PK赛中,来自谷歌的一位国际选手展示了他在谷歌时做的一套系统,把三国人物关系整理并展示成了一张大图,属于非常典型的图式应用。 PostgreSQL非常适合于这类场景,有着丰富的SQL接口和良好的性能。下面这些都是PG在图式搜索方面的应用: 《小微贷款、天使投资(风控助手)业...

PostgreSQL 11 preview - Logical replication support for TRUNCATE

2 minute read

背景 PostgreSQL 11 逻辑订阅支持insert, update, delete, truncate。 后期可能还会增加对DDL的支持,目前的DDL(包括对已有订阅表的结构修改,新增,删除表等操作)通过如下方法来支持: 《PostgreSQL 逻辑订阅 - DDL 订阅 实现方法》

PostgreSQL 11 preview - Allow on-line enabling and disabling of data checksums (含pg_verify_checksums工具,离线检查数据文件有误块错误)

2 minute read

背景 PostgreSQL的数据文件是以数据块组织的,由于数据块可能比文件系统的原子写更大,所以在某些情况下可能出现partial write(例如断点或者块设备异常),出现数据块数据损坏(不一致)的情况。为了满足可靠性要求,PG在设计之初已经考虑到这点,所以有了WAL的FULL PAGE WRITE,以及WAL...

PostgreSQL 11 preview - Faster partition pruning

less than 1 minute read

背景 目前PG社区版本内置分区表的性能受制于一些BIND、LOCK所有子表等问题,当分区过多时,性能会受到极大的影响。 《分区表锁粒度差异 - pg_pathman VS native partition table》 《PostgreSQL 查询涉及分区表过多导致的性能问题 - 性能诊断与优化(大量BIND...