Recent Posts

分区表锁粒度差异 - pg_pathman VS native partition table

3 minute read

背景 PostgreSQL 内置分区相比pg_pathman分区插件性能要差一大截: 《PostgreSQL 10 内置分区 vs pg_pathman perf profiling》 主要原因: 1、与优化器有关,内置分区表,plan\bind时需要分析所有子表,所以子表越多,性能会越差。例如下面这个CA...

PostgreSQL APP海量FEED LOG实时质量统计CASE(含percentile_disc) - 含rotate 分区表

15 minute read

背景 服务质量监控是精细化质量管理的重要环节: 例如实时统计FEED LOG在某些分组在某些固定区间(分钟、5分钟、10分钟)的水位值,avg, sum, count等。 本文将介绍一个CASE,某个服务的实时质量监控。 多个点值以数组的形式,批量合并写入。例如2500个点,一批写入。 为了实现高效率的统...

PostgreSQL 相似搜索分布式架构设计与实践 - dblink异步调用与多机并行(远程 游标+记录 UDF实例)

4 minute read

背景 背景请参考如下: 《PostgreSQL 相似搜索设计与性能 - 地址、QA、POI等文本 毫秒级相似搜索实践》 当需要进行相似搜索的数据量大于单机处理能力时,我们需要水平拆分来提高搜索能力。 或者可以使用阿里云的PolarDB for PG的产品(类似ORACLE RAC,支持增加计算节点)。比水平...

PostgreSQL 11 preview - 新功能, 分区表全局索引管理

5 minute read

背景 PostgreSQL 10开始引入了原生支持的分区表,支持了range, list分区。 PostgreSQL 11对分区表的功能进行了增强,首先增加了hash分区表。其次,增加了分区表全局索引管理(PostgreSQL 10 分区表的主表上不支持索引,如果要建索引,不得不在每个分区上去定义,不太方便的。...

PostgreSQL 11 preview - 并行排序、并行索引 (性能线性暴增) 单实例100亿TOP-K仅40秒

14 minute read

背景 在OLAP场景,排序是一个非常重要的功能。也是衡量数据库是否适合OLAP场景的一个重要指标。例如这些场景: 1、求TOP-K,例如在对数据进行分组后,取出每个分组的TOP-K。 2、求中位数,要求对数据排序,并取出处于中间水位的值。 3、数据柱状图,需要对数据进行排序,并按记录均匀分割成若干BUCKE...

PostgreSQL 11 preview - 分区表智能并行JOIN (已类似MPP架构,性能暴增)

22 minute read

背景 PostgreSQL 10开始引入了内置分区表功能,当分区表与分区表发生JOIN时,大家想象一下,分区和分区能直接一对一JOIN,而跳过与其他分区JOIN吗? 实际上我们在单表上,通过HASH可以达到类似的目的,即分片与分片JOIN,这样可以把JOIN的数据集合变小,同时能使用并行: 《PostgreS...

PostgreSQL 相似搜索设计与性能 - 地址、QA、POI等文本 毫秒级相似搜索实践

17 minute read

背景 在现实生活中,很多地方会用到相似搜索,例如 1、打车,要去某个地方,我们输入的目的地可能和数据库里面存的并不完全一致。所以只能通过相似搜索来实现。 2、搜索问题,同样的道理,我们搜的问题可能和存的问题不完全一致。只能通过相似搜索来匹配。 3、搜索兴趣点,等。 实际上PostgreSQL就可以支持相似...