Recent Posts

连接PostgreSQL时,如何指定参数

less than 1 minute read

背景 连接数据库时,如何配置默认参数? libpq https://www.postgresql.org/docs/9.6/static/libpq-connect.html#LIBPQ-CONNSTRING 所有支持的连接参数都在以上链接中 KV模式 配置连接串时,可以使用KV模式,例子 host=lo...

数据透视 - 商场(如沃尔玛)选址应用

10 minute read

背景 人群透视是商业与数据结合的案例之一,比如大型商场的选址,可与分析的数据包括车流、人流量等等。 结合数据可以更深入的分析人群的组成结构,消费能力等等,给大型商场的选址带来更多的参考价值。 那么如何使用数据库透视人群数据呢? 场景构建 1. 人群属性表 记载了每个人的各个属性段落,比如收入、车龄...

PostgreSQL业务函数代码版本管理 - 自动备份存储过程、函数代码到SVNgithub…

6 minute read

背景 市面上有很多代码的版本管理软件,比如gitlab, github, svn等等。 商业数据库的编程能力较强,比如Oracle的PL/SQL,很多传统企业会将对一致性、可靠性要求非常高的业务逻辑放到数据库中,这就造成了数据库内不仅仅存储数据,也存储了部分业务代码。 PostgreSQL 作为开源界最高级的...

pidstat 统计进程、线程、进程组的资源消耗

8 minute read

背景 如果我们要查看Linux下面进程、进程组、线程的资源消耗的统计信息,可以使用pidstat,它可以收集并报告进程的统计信息。 pidstat实际上也是将/proc/pid下的统计信息统筹后展现给用户。 pidstat例子 1. 列出IO统计信息:-d 2. 列出内存使用统计,page fault:-...

PostgreSQL 备库apply延迟(delay)原理分析与诊断

4 minute read

背景 开车的同学都喜欢一马平川,最好是车道很多,车很少,开起来爽。 大家想象一下,同样的车速,6车道每秒可以通过6辆车,而1车道每秒就只能通过1辆车。 好了,我们回到IO层面,我们在使用fio测试块设备的IO能力时,可以选择多少个线程进行压测,实际可以理解为开多少车道的意思。 只要没到通道或者设备本身的...

PostgreSQL bitmapAnd, bitmapOr, bitmap index scan, bitmap heap scan

6 minute read

背景 在PostgreSQL中,多个单列索引是可以用在组合查询SQL中的,也就是说实现了bitmap scan。 比如 select * from tbl where c1=1 and c2=1 or c3=1; 用到了3列,如果这3列分别有一个索引,那么PostgreSQL会使用这三个索引的bitmap ...

PostgreSQL GIN 单列聚集索引 应用

2 minute read

背景 聚集存储比较好理解,数据按照聚集KEY存储在一个或相邻的数据块中,对聚集KEY的轨迹、行为数据检索可以大幅减少IO。 那么聚集索引呢?我们知道通常BTREE索引中存储的是KEY以及对应数据的堆表行号,每条记录一个索引条目。 而GIN索引也是树结构,只不过它对于单个KEY只存储一个条目,所有行号会存储到一...