Recent Posts

PostgreSQL pgbench : 冒号处理

1 minute read

背景 pgbench 的自定义测试脚本中,冒号有特殊的含义,可以用于变量名的前面,表示这个位置使用变?刻婊弧? /*---------- * Join arguments with whitespace separators. Arguments starting wit...

PostgreSQL Oracle 兼容性之 - Partition By Outer Join实现稠化报表

6 minute read

背景 背景介绍:借用Oracle的一篇例子: http://blog.sina.com.cn/s/blog_4cef5c7b01016lm5.html 在数据库表中,存储的数据经常是稀疏数据(sparse data),而不是稠密数据(dense data)。 先来了解一下什么是稀疏数据,比如一个产品销售情况...

PostgreSQL 高并发任务分配系统 实践

2 minute read

背景 给任务分配线程ID,或让线程去抢占任务执行,是任务分配系统中的基本需求。 目的是能够快速的消耗掉所有的任务,同又要保证两点: 1、所有任务都被领取。 2、每个任务只能被一个线程领取。 3、每个线程同一时间只能领取一个任务。 实际上在数据库中, 就是一个高并发的,实时更新系统,设计时要尽量避免冲突,...

Greenplum merge insert 用法与性能 (insert on conflict) - 2

5 minute read

背景 《Greenplum merge insert 用法与性能 (insert on conflict)》 这一篇写的是批量的合并写(有则更新,无则插入)。 在Greenplum开放了segment节点的写后,可以采用传统的方法来实现,不需要批量操作。 DEMO Greenplum暂时不支持insert ...

Greenplum merge insert 用法与性能 (insert on conflict) - 1

7 minute read

背景 PostgreSQL insert on conflict语法非常强大,支持合并写入(当违反某唯一约束时,冲突则更新,不冲突则写入),同时支持流式计算。 流计算例子链接: 《PostgreSQL 流式统计 - insert on conflict 实现 流式 UV(distinct), min, max...

Greenplum 点查(按PK查询)性能与提升空间

less than 1 minute read

背景 点查,基于PK的查询或者OLTP类查询,实际上并不是GPDB 擅长的,GPDB擅长的是海量的OLAP。 不过在企业、政府等窗口服务类业务,并发实际上并不高,如果GPDB的点查性能达到一定的性能时,实际上也能满足这类场景的需求。 测试 下面是一组测试,造10亿条测试数据,按PK查询。 create ta...

Greenplum 统计信息收集参数 - 暨统计信息不准引入的broadcast motion一例

3 minute read

背景 数据库执行计划的好坏,与数据库的SQL优化器息息相关。Greenplum有两套优化器,legacy query optimizer 与 ORCA。 这两个优化器都是CBO优化器,都需要依赖统计信息,如果统计信息不准确,可能生成的执行计划就不准确。 例如我们有一个这样的QUERY,发现怎么跑都跑不出来。 ...