PostgreSQL Oracle 兼容性之 - 字符串分割
背景 Oracle中字符串分割,比较麻烦,可能需要写PL/SQL来实现。 create or replace TYPE "STRINGS_TABLE" is table of varchar2(2000) create or replace FUNCTION highsoft_split( p...
背景 Oracle中字符串分割,比较麻烦,可能需要写PL/SQL来实现。 create or replace TYPE "STRINGS_TABLE" is table of varchar2(2000) create or replace FUNCTION highsoft_split( p...
背景 Oracle创建pl/sql函数时,有一个参数DETERMINISTIC,含义时只要输入的参数一样,返回的结果一定一样。 DETERMINISTIC Clause ``` Specify DETERMINISTIC to indicate that the function returns
背景 在某些非常特殊的情况下,可能遇到数据库无法停库,也无法连接(几乎处于不可用状态)的情况。即使使用-m immediate这样的暴力停库都无法停下来。 例如,当数据库的某些用户进程进入了defunct状态时。 2951 20411 37111 0 14:28 ? 00:00:00 ...
背景 bloom filter是一个空间压缩,概率数据结构,可以存储超容量的数据集,用于判断某个元素是否存在于数据集中。但是bloom filter存在一定的错误率(当判断存在时,可能不存在,因为这个元素的bits可能被set了。但是当判断发现元素不存在时就一定不存在。) 例如A元素对应1,19,200,21等...
背景 最近《最强大脑》节目的国际PK赛中,来自谷歌的一位国际选手展示了他在谷歌时做的一套系统,把三国人物关系整理并展示成了一张大图,属于非常典型的图式应用。 PostgreSQL非常适合于这类场景,有着丰富的SQL接口和良好的性能。下面这些都是PG在图式搜索方面的应用: 《小微贷款、天使投资(风控助手)业...
背景 Oracle 临时关闭或启用触发器的语法如下 https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4001.htm ALTER TRIGGER [ schema. ]trigger { ENABLE ...
背景 PostgreSQL 11 逻辑订阅支持insert, update, delete, truncate。 后期可能还会增加对DDL的支持,目前的DDL(包括对已有订阅表的结构修改,新增,删除表等操作)通过如下方法来支持: 《PostgreSQL 逻辑订阅 - DDL 订阅 实现方法》
背景 PostgreSQL的数据文件是以数据块组织的,由于数据块可能比文件系统的原子写更大,所以在某些情况下可能出现partial write(例如断点或者块设备异常),出现数据块数据损坏(不一致)的情况。为了满足可靠性要求,PG在设计之初已经考虑到这点,所以有了WAL的FULL PAGE WRITE,以及WAL...
背景 目前PG社区版本内置分区表的性能受制于一些BIND、LOCK所有子表等问题,当分区过多时,性能会受到极大的影响。 《分区表锁粒度差异 - pg_pathman VS native partition table》 《PostgreSQL 查询涉及分区表过多导致的性能问题 - 性能诊断与优化(大量BIND...