Recent Posts

PostgreSQL 11 preview - JIT接口放开

1 minute read

背景 LLVM对大量数据运算(比如说where条件中过滤大量的数据,聚合计算大量的数据等)的效率提升非常的明显。 原理参考 《分析加速引擎黑科技 - LLVM、列存、多核并行、算子复用 大联姻 - 一起来开启PostgreSQL的百宝箱》 PostgreSQL 11的JIT接口正在进行打磨,完善。借助L...

我和大象 - 感恩、感谢、加油、腾飞

less than 1 minute read

背景 http://www.idcquan.com/Special/OSCAR2018/index.html 由中国信息通信研究院主办、中国通信标准化协会支持的”OSCAR云计算开源产业大会”于2018年3月21日-22日在国家会议中心举行。 非常有幸获得了“OSCAR尖峰开源人物”奖项。 奖项不敢自居...

PostgreSQL 11 preview - 多阶段并行聚合array_agg, string_agg

3 minute read

背景 并行聚合原理请参考: 《PostgreSQL 10 自定义并行计算聚合函数的原理与实践 - (含array_agg合并多个数组为单个一元数组的例子)》 实际上PostgreSQL支持并行计算后,聚合就分为多阶段聚合与原始的一阶段聚合两种玩法。 多阶段聚合会将聚合任务分配给所有的WORKER执行,然后再...

PostgreSQL 11 preview - 虚拟列(自动根据表达式产生值)

2 minute read

背景 通过增加虚拟字段,可以让数据库根据虚拟列的定义,自动填充值。 与自增,DEFAULT不同的是,虚拟列中可以从其他列的内容产生。 例如 CREATE TABLE t1 ( ..., height_cm numeric, height_in numeric GENE...

PostgreSQL 11 preview - 分页内核层优化 - 索引扫描offset优化(使用vm文件skip heap scan)

4 minute read

背景 OFFSE limit是分页常用的功能。很多人可能有过这样的感受,分页越到后面越慢。 实际上原因是由于数据库在OFFSET指定记录数之前,是需要扫过这么多的符合条件的TUPLE才能知道应该从哪里开始返回。 比如 1、索引扫描时,并不知道一个索引页有多少条有效记录(因为索引中没有版本号,需要回表才知道这...

PostgreSQL 11 preview - 索引优化。filter智能消除、分区索引智能合并

5 minute read

背景 当数据量较大时,对数据分区是一种比较不错的数据管理手段。 每个分区都有对应的边界定义,在PostgreSQL中我们可以把它理解为分区的constraint。 目前PostgreSQL在优化器的细节方面进行打磨,constraint可以被优化器利用来做一些优化的工作。 1、例如: 每个班级一个分区,你...