PostgreSQL 并行计算解说 汇总

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持几十种场景的并行计算。 并行计算到底带来了多大的性能提升? 是否满足实时分析的需求? 是否可以支持OLTP与OLAP混合业务使用? 《PostgreSQL 多模, 多应用场景实践》

标签

PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持


背景

PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持几十种场景的并行计算。

并行计算到底带来了多大的性能提升?

是否满足实时分析的需求?

是否可以支持OLTP与OLAP混合业务使用?

《PostgreSQL 多模, 多应用场景实践》

PostgreSQL 11 并行计算使用场景、性能提升倍数

场景 数据量 关闭并行 开启并行 并行度 开启并行性能提升倍数
全表扫描 10 亿 53.4 秒 1.8 秒 32 29.7 倍
条件过滤 10 亿 53.4 秒 1.87 秒 32 28.6 倍
哈希聚合 10 亿 142.3 秒 4.8 秒 30 29.6 倍
分组聚合 10 亿 142.3 秒 4.8 秒 30 29.6 倍
select into 10 亿 54.5 秒 1.9 秒 32 28.7 倍
create table as 10 亿 54.7 秒 2 秒 30 27.35 倍
CREATE MATERIALIZED VIEW 10 亿 54.7 秒 2 秒 30 27.35 倍
create index 10 亿 964 秒 252 秒 32 3.83 倍
parallel CREATE INDEX CONCURRENTLY - 不堵塞读写 10亿 509.6 秒 355 秒 16 1.44 倍
排序 10 亿 76.9 秒 2.75 秒 32 28 倍
自定义并行聚合1(求 distinct 数组 字段元素、以及count distinct) 10 亿 298.8 秒 8.7 秒 36 34.3 倍
自定义并行聚合2(求 distinct 普通 字段元素、以及count distinct) 10 亿 96.5 秒 3.43 秒 36 28 倍
自定义并行函数(UDF) 10 亿 456 秒 16.5 秒 30 27.6 倍
普通并行(gather) 10 亿 70.2 秒 2.5 秒 30 28.1 倍
归并并行(gather merge) 10 亿 78.2 秒 2.76 秒 30 28.3 倍
rc (ud agg count distinct) 10 亿 107 秒 3.65 秒 30 29.3 倍
rr (ud agg count distinct) 10 亿 107 秒 3.65 秒 30 29.3 倍
parallel OLAP : 中间结果 parallel with unlogged table ; unlogged table并行求avg case 10 亿 73.6 秒 2.5 秒 30 29.44 倍
parallel index scan 10 亿 19 秒 1.58 秒 20 12 倍
parallel bitmap scan 10 亿 23.98 秒 15.86 秒 20 1.5 倍
parallel index only scan 10 亿 8 秒 0.6 秒 20 13.33 倍
parallel nestloop join 10亿 join 10亿 using (i) where t1.i<10000000 14.4 秒 4.6 秒 8 3.13 倍
parallel merge join 10亿 join 10亿 using (i) where t1.i<10000000 3.2 秒 1 秒 8 3.2 倍
parallel hash join 10亿 join 10亿 using (i) where t1.i<10000000 and t2.i<10000000 8.1 秒 1 秒 20 8.1 倍
parallel hash join 10亿 join 10亿 using (i) 1071 秒 92.3 秒 20 11.6 倍
parallel partition table wise join 10亿 join 10亿 using (i) 1006 秒 76 秒 24 13.2 倍
parallel partition table wise agg 10亿 191 秒 8 秒 24 23.9 倍
parallel append 10亿 70.5 秒 3.16 秒 24 22.3 倍
parallel append merge 10亿 99.4 秒 5.87 秒 24 16.93 倍
parallel union all 10亿 99 秒 5.6 秒 24 17.68 倍
parallel CTE 10亿 65.65 秒 3.33 秒 24 19.7 倍
parallel 递归查询, 树状查询, 异构查询, CTE, recursive CTE, connect by 异构数据1亿,日志数据10亿 5.14 秒 0.29 秒 24 17.7 倍
parallel scan mult FDW tables (通过继承表方式) 10亿 180 秒 7.8 秒 24 23.1 倍
parallel scan mult FDW tables (通过union all) 10亿 165.6 秒 27.8 秒 5 6 倍
parallel leader process 10亿 186 秒 95 秒 1 2 倍
parallel subquery 20亿 179.7 秒 6.5 秒 28 27.6 倍

每一项性能提升的测试CASE请见参考部分。

参考

《PostgreSQL 并行计算解说 之29 - parallel 递归查询, 树状查询, 异构查询, CTE, recursive CTE, connect by》

《PostgreSQL 并行计算解说 之28 - parallel CREATE INDEX CONCURRENTLY - 不堵塞读写》

《PostgreSQL 并行计算解说 之27 - parallel subquery》

《PostgreSQL 并行计算解说 之26 - parallel gather | gathermerge - enable leader worker process》

《PostgreSQL 并行计算解说 之25 - parallel FDW scan (并行访问多个外部表) with parallel append (FDW must with IsForeignScanParallelSafe)》

《PostgreSQL 并行计算解说 之24 - parallel CTE (Common Table Express)》

《PostgreSQL 并行计算解说 之23 - parallel union all》

《PostgreSQL 并行计算解说 之23 - parallel append merge》

《PostgreSQL 并行计算解说 之22 - parallel append》

《PostgreSQL 并行计算解说 之21 - parallel partition table wise agg》

《PostgreSQL 并行计算解说 之20 - parallel partition table wise join》

《PostgreSQL 并行计算解说 之19 - parallel hash join》

《PostgreSQL 并行计算解说 之18 - parallel merge join》

《PostgreSQL 并行计算解说 之17 - parallel nestloop join》

《PostgreSQL 并行计算解说 之16 - parallel index only scan》

《PostgreSQL 并行计算解说 之15 - parallel bitmap scan》

《PostgreSQL 并行计算解说 之14 - parallel index scan》

《PostgreSQL 并行计算解说 之13 - parallel OLAP : 中间结果 parallel with unlogged table》

《PostgreSQL 并行计算解说 之12 - parallel in rc,rr 隔离级别》

《PostgreSQL 并行计算解说 之11 - parallel gather, gather merge》

《PostgreSQL 并行计算解说 之10 - parallel 自定义并行函数(UDF)》

《PostgreSQL 并行计算解说 之9 - parallel 自定义并行聚合》

《PostgreSQL 并行计算解说 之8 - parallel sort》

《PostgreSQL 并行计算解说 之7 - parallel create index》

《PostgreSQL 并行计算解说 之6 - parallel CREATE MATERIALIZED VIEW》

《PostgreSQL 并行计算解说 之5 - parallel create table as》

《PostgreSQL 并行计算解说 之4 - parallel select into》

《PostgreSQL 并行计算解说 之3 - parallel agg》

《PostgreSQL 并行计算解说 之2 - parallel filter》

《PostgreSQL 并行计算解说 之1 - parallel seq scan》

 

免费领取阿里云RDS PostgreSQL实例、ECS虚拟机

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
SQL 移动开发 关系型数据库
PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(三)|学习笔记
快速学习PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(三)
PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(三)|学习笔记
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之13 - parallel OLAP : 中间结果 parallel with unlogged table
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan parallel
654 0
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之14 - parallel index scan
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan paral
1213 0
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之15 - parallel bitmap scan
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan
1293 0
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之16 - parallel index only scan
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan
792 0
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之17 - parallel nestloop join
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan
414 0
|
1天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
12 0
|
28天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
59 3
|
28天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
70 3
|
28天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
88 2