Recent Posts

Greenplum RT高的原因分析 和 优化方法

10 minute read

背景 本文测试Greenplum的SELECT, INSERT, UPDATE, DELETE并发性能。 为了方便观察日志,打开SQL审计和时间统计。 $gpconfig -c log_duration -v on $gpconfig -c log_statement -v all $gpconfig...

PostgreSQL UTF8 和 GB18030编码map文件不完整的问题

4 minute read

背景 http://www.postgresql.org/message-id/20150309205145.4031.32069@wrigleys.postgresql.org 报的一个BUG,在utf8的数据库中,将chr(128512)转换为GB18030时报错,因为它的UTF8编码在MAP表中找不到对应...

一张图看懂MADlib能干什么

less than 1 minute read

背景 MADlib最初是由pivotal的一些数据科学家贡献的开源数据挖掘库,现已加入阿帕奇孵化器项目。 MADlib能干什么呢?看一张图就明白了,以下取自 http://user2014.stat.ucla.edu/files/PivotalR_user2014/userR2014_PivotalR.pdf...

PostgreSQL snapshot too old补丁, 防止数据库膨胀

11 minute read

背景 PostgreSQL 9.6已支持snapshot too old , 目前仅仅针对未申请事务号的事务(pg_stat_activity.backend_xid为空的事务),这种事务会被CANCEL,而申请了事务号的事务(例如写事务)则不会触发snapshot too old。 所以即使你使用9.6,对...

ltree 支持的字符 ISALNUM

1 minute read

背景 ltree目前只支持alpha numeric,数字,字母,下划线。 postgres=# select text2ltree('abc.\<f'); ERROR: 42601: syntax error at position 4 LOCATION: ltree_in, ltree_i...

注意PostgreSQL 隐式锁请求

4 minute read

背景 我们在使用数据库时,经常遇到锁等待的事情。例如一个用户在更新一条记录时,另一个会话要更新同一条记录就需要等待。 这种锁等待是比较显而易见的,有一些锁等待你可能会觉得匪夷所思。 例如: 会话A: postgres=# begin; BEGIN postgres=# alter table te...

PostgreSQL promote 激活 源码分析

6 minute read

背景 PostgreSQL standby可以通过两种方法来激活成为主库: 一种是trigger file,配置在recovery.conf中。 另一种是pg_ctl promote发送SIGUSR1信号给postmaster进程。 同时,PostgreSQL支持快速激活和非快速激活, fast prom...

PostgreSQL 支持压缩吗?压缩比如何?

3 minute read

背景 PostgreSQL支持压缩,没有错,只要是变长字段类型,你就可以选择是否要压缩存储。 存储格式支持 The TOAST management code recognizes four different strategies for storing TOAST-able columns on disk...

同态加密homomorphic encryption的好处

2 minute read

背景 在引入同态加密前,看一个stackoverflow的问答。 问题: 1. I got a SaaS product and the data is kinda sensitive. I want to give my customers 100% security on the fact that I ...

逻辑复制中没有主键或非空+唯一约束存在的问题

2 minute read

背景 当我们在使用PostgreSQL的logical decoding时, 更新和删除数据涉及到行的定位,如果没有方法定位到唯一行,可能导致接收端重做时出问题。 PostgreSQL提供了几种区分OLD TUPLE的方式,使用unique index + not null , 或primary key都没有歧...