PostgreSQL pgbench : 冒号处理
背景 pgbench 的自定义测试脚本中,冒号有特殊的含义,可以用于变量名的前面,表示这个位置使用变?刻婊弧? /*---------- * Join arguments with whitespace separators. Arguments starting wit...
背景 pgbench 的自定义测试脚本中,冒号有特殊的含义,可以用于变量名的前面,表示这个位置使用变?刻婊弧? /*---------- * Join arguments with whitespace separators. Arguments starting wit...
背景 一个OUTER JOIN的SQL优化,引出了一系列的知识点,非常值得深入探讨。 内存带宽 , JOIN算法 , FILTER亲和力 , TSP , HINT , 索引扫描顺序与命中率 , 语义转换 , 扫描顺序 , 存储顺序 , 命中率 , 索引深度 , partial index 。 SQL样例 ...
背景 背景介绍:借用Oracle的一篇例子: http://blog.sina.com.cn/s/blog_4cef5c7b01016lm5.html 在数据库表中,存储的数据经常是稀疏数据(sparse data),而不是稠密数据(dense data)。 先来了解一下什么是稀疏数据,比如一个产品销售情况...
背景 给任务分配线程ID,或让线程去抢占任务执行,是任务分配系统中的基本需求。 目的是能够快速的消耗掉所有的任务,同又要保证两点: 1、所有任务都被领取。 2、每个任务只能被一个线程领取。 3、每个线程同一时间只能领取一个任务。 实际上在数据库中, 就是一个高并发的,实时更新系统,设计时要尽量避免冲突,...
背景 PostgreSQL 的功能非常的强大,以至于一些框架可能无法完全发挥出PG的功能。 不过现在活跃的框架对PG的支持越来越好了,例如Django,就有专门针对PG的模块,可以使用PG的JSON,索引接口等功能。 https://docs.djangoproject.com/en/2.0/search/?...
背景 《Greenplum merge insert 用法与性能 (insert on conflict)》 这一篇写的是批量的合并写(有则更新,无则插入)。 在Greenplum开放了segment节点的写后,可以采用传统的方法来实现,不需要批量操作。 DEMO Greenplum暂时不支持insert ...
背景 PostgreSQL insert on conflict语法非常强大,支持合并写入(当违反某唯一约束时,冲突则更新,不冲突则写入),同时支持流式计算。 流计算例子链接: 《PostgreSQL 流式统计 - insert on conflict 实现 流式 UV(distinct), min, max...
背景 点查,基于PK的查询或者OLTP类查询,实际上并不是GPDB 擅长的,GPDB擅长的是海量的OLAP。 不过在企业、政府等窗口服务类业务,并发实际上并不高,如果GPDB的点查性能达到一定的性能时,实际上也能满足这类场景的需求。 测试 下面是一组测试,造10亿条测试数据,按PK查询。 create ta...
背景 varbitx是阿里云RDS PG提供的一个BIT操作插件,使用这个插件已经成功的帮助用户提供了万亿级的毫秒级实时圈人功能。 《阿里云RDS for PostgreSQL varbitx插件与实时画像应用场景介绍》 《基于 阿里云 RDS PostgreSQL 打造实时用户画像推荐系统(varbitx)...
背景 数据库执行计划的好坏,与数据库的SQL优化器息息相关。Greenplum有两套优化器,legacy query optimizer 与 ORCA。 这两个优化器都是CBO优化器,都需要依赖统计信息,如果统计信息不准确,可能生成的执行计划就不准确。 例如我们有一个这样的QUERY,发现怎么跑都跑不出来。 ...