PostgreSQL运维核心技能之掌握并行查询

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PostgreSQL运维核心技能之掌握并行查询

一、什么是并行查询?

PostgreSQL利用多 CPU 让查询更快的查询计划,这种特性被称为并行查询。并行查询是PostgreSQL的一项强大功能,能够显著提升查询性能。很多查询使用并行查询时比之前快了超过两倍,有些查询是以前的四倍甚至更多的倍数。那些访问大量数据但只返回其中少数行给用户的查询最能从并行查询中获益。

二、并行查询如何工作

优化器判断某一个特定的查询,并行查询是最快的执行策略时,将创建一个查询计划。

该计划包括一个Gather或Gather Merge节点。

每个后台工作进程都会执行并行查询的并行部分。领导者不仅执行该部分,还负责读取工作进程生成的元组。

当并行部分生成少量元组时,领导者像额外的工作进程一样加快查询速度。

相反,当生成大量元组时,领导者主要忙于读取元组和执行Gather或Gather Merge节点以上的处理步骤,很少执行并行部分。

三、并行查询工作进程数量

四、并行查询使用先决条件

在确定使用并行技术之前,要确定软硬件的一些先决条件:

任务task必要条件

备选进行并行操作的任务task必须是一个大任务作业,比如,长时间的查询。

任务时间通常可以以分钟、小时进行计数,这样的任务,才值得冒险使用并行操作方案;

资源闲置条件

只有在数据库服务器资源存在闲置的时候,才可以考虑进行并行处理。

如果经常性的繁忙,贸然使用并行只能加剧资源的争用。

五、使用并行查询

1. 启用并行查询

确保配置文件 postgresql.conf 中的相关参数已启用:

  1. # 最大并行工作者数(全局)
  2. max_parallel_workers = 8

  3. # 每个并行查询的最大工作者数
  4. max_parallel_workers_per_gather = 4

重启数据库以应用更改:

  1. sudo systemctl restart postgresql

2. 配置表和查询

确保表统计信息足够详细,以便优化器能正确评估并行查询的收益:

  1. ANALYZE your_table;

3. 控制并行度

通过设置 parallel_setup_costparallel_tuple_cost 来调整并行查询的成本估算

  1. SET parallel_setup_cost = 1000;
  2. SET parallel_tuple_cost = 0.1;

4. 使用并行查询

编写支持并行处理的查询,例如:

  1. SELECT COUNT(*)
  2. FROM your_table
  3. WHERE some_column > some_value;

5. 检查并行执行计划

使用 EXPLAIN 命令查看查询的执行计划,确认是否使用并行查询:

  1. EXPLAIN (ANALYZE, VERBOSE)
  2. SELECT COUNT(*)
  3. FROM your_table
  4. WHERE some_column > some_value;

6. 调优并行查询

根据查询性能,调整以下参数:

  • min_parallel_table_scan_size
  • min_parallel_index_scan_size

例如:

  1. SET min_parallel_table_scan_size = '8MB';
  2. SET min_parallel_index_scan_size = '512kB';

7. 监控并行查询

使用系统视图 pgstat_activity 和 pg_stat_progress* 监控并行查询的执行情况:

  1. SELECT * FROM pg_stat_activity WHERE backend_type = 'parallel worker';
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
消息中间件 存储 关系型数据库
PostgreSQL技术大讲堂 - 第33讲:并行查询管理
PostgreSQL从小白到专家,技术大讲堂 - 第33讲:并行查询管理
463 1
|
SQL 关系型数据库 测试技术
沉浸式学习PostgreSQL|PolarDB 20: 学习成为数据库大师级别的优化技能
在上一个实验《沉浸式学习PostgreSQL|PolarDB 19: 体验最流行的开源企业ERP软件 odoo》 中, 学习了如何部署odoo和polardb|pg. 由于ODOO是非常复杂的ERP软件, 对于关系数据库的挑战也非常大, 所以通过odoo业务可以更快速提升同学的数据库优化能力, 发现业务对数据库的使用问题(如索引、事务对锁的运用逻辑问题), 数据库的代码缺陷, 参数或环境配置问题, 系统瓶颈等.
943 1
|
3月前
|
缓存 运维 监控
PostgreSQL运维技巧之vacuum调优
PostgreSQL运维技巧之vacuum调优
288 3
|
3月前
|
运维 Linux Shell
从Linux小白到大神的逆袭之路:解锁高级自测秘籍,让你的Linux技能瞬间燃爆,成为运维界的超级英雄!
【8月更文挑战第5天】Linux作为开源世界的基石,凭借其强大功能与高度可定制性,吸引着众多技术爱好者与专业人士。对于希望精进Linux系统管理的学习者来说,“Linux高级自测学习”是一次技术深潜之旅,也是对个人极限的挑战。本学习路径首先回顾基础操作,并进阶至LVM磁盘管理、系统性能优化、复杂网络配置与安全、自动化运维及容器化技术等领域。通过实践与探索,你将逐步解锁Linux潜力,成为高手。技术之路永无止境,保持好奇与求知心至关重要。
55 4
|
6月前
|
运维 数据安全/隐私保护 网络协议
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(六)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(六)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(六)
|
6月前
|
运维 数据安全/隐私保护 网络协议
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(八)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(八)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(八)
|
6月前
|
运维 安全 Windows
【网络建设与运维】2023年浙江省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2023年浙江省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2023年浙江省职业院校技能大赛中职组“网络建设与运维”赛项规程
|
6月前
|
运维 数据安全/隐私保护 网络协议
【网络建设与运维】2024年浙江省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2024年浙江省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2024年浙江省职业院校技能大赛中职组“网络建设与运维”赛项规程
|
6月前
|
运维 数据安全/隐私保护 网络协议
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(二)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(二)
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项例题(二)
|
6月前
|
运维 安全 存储
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程
【网络建设与运维】2024年河北省职业院校技能大赛中职组“网络建设与运维”赛项规程