当前位置: 首页 > news >正文

CloudberryDB(四)并行执行

要查看CloudberryDB & Greenplum数据库的并行度配置,可以使用以下几种方法:

### 方法一:使用`SHOW`命令

在Greenplum数据库中,可以使用`SHOW`命令来查看当前的并行度配置。例如:

```sql

SHOW gp_parallel_degree ;
SHOW max_parallel_workers_per_gather;
```

这条命令将显示当前会话的最大并行工作进程数。

### 方法二:查询系统表

Greenplum数据库的系统表中存储了有关并行度配置的信息。可以通过查询这些系统表来获取并行度配置。例如:

```sql
SELECT name, setting FROM pg_settings WHERE name LIKE 'max_parallel_workers_per_gather';
```

这条SQL语句将查询`pg_settings`系统表,返回与`max_parallel_workers_per_gather`相关的配置信息。

### 方法三:查看`postgresql.conf`文件

Greenplum数据库的并行度配置也存储在`postgresql.conf`文件中。可以打开该文件并查找与并行度相关的配置项,例如:

```conf
max_parallel_workers_per_gather = 4
```

### 方法四:使用`gpconfig`命令

如果你有足够的权限,可以使用`gpconfig`命令来查看当前的并行度配置。例如:

```bash
gpconfig -s max_parallel_workers_per_gather
```

这条命令将显示当前集群中所有节点的`max_parallel_workers_per_gather`配置值。

greenplum 并行执行

Greenplum 是一个基于 PostgreSQL 的大规模并行处理(MPP)数据库,专为大数据分析和数据仓库设计。其核心特性之一就是能够并行执行查询,以提升处理大规模数据时的性能。

以下是 Greenplum 并行执行的关键点:

1. 架构设计Greenplum 采用无共享(shared-nothing)架构,数据分布在多个节点上,每个节点独立处理自己的数据部分,查询执行时各节点并行工作,最后汇总结果。

2. 数据分布数据通过分布键(Distribution Key)分散到不同节点,确保数据均匀分布,避免倾斜。查询时,每个节点只处理本地数据,减少数据传输。

3. 并行查询执行Greenplum 将查询分解为多个并行任务,分配到各节点执行。每个节点独立处理自己的任务,最后将结果汇总返回。

4. 并行操作类型

•并行扫描:多个节点同时扫描数据。

•并行连接:连接操作在多个节点上并行执行。

•并行聚合:聚合操作分散到多个节点,最后汇总结果。

•并行排序:排序操作在多个节点上并行进行。

5. 资源管理Greenplum 通过资源队列(Resource Queue)管理查询资源,确保高并发下的资源公平分配,防止单个查询占用过多资源。

6. 优化器Greenplum 的查询优化器会生成并行执行计划,选择最优的并行策略,如数据分布、连接顺序等,以最大化并行效率。

7. 性能调优•数据分布优化:选择合适的分发键,确保数据均匀分布。

•分区表:使用分区表减少扫描数据量。

•索引:合理使用索引加速查询。

•统计信息:定期更新统计信息,帮助优化器生成更好的执行计划。

8. 并行执行示例sql复制EXPLAIN SELECT * FROM large_table WHERE column = 'value';执行计划会显示查询如何并行执行,包括扫描、连接、聚合等操作的并行化。

9. 并行执行的限制

•数据倾斜:数据分布不均会导致部分节点负载过高。

•资源竞争:高并发时,资源竞争可能影响性能。

•查询复杂度:复杂查询可能难以完全并行化。

总结Greenplum 的并行执行是其高性能的关键,通过数据分布、并行操作和资源管理,能够高效处理大规模数据。合理的数据分布和查询优化是确保并行执行效率的重要因素。

并行参数

在 Greenplum 数据库中,并行执行是其高性能的核心特性之一。为了优化并行执行的性能,Greenplum 提供了多个参数来控制并行度、资源分配和执行行为。

以下是一些常用的 Greenplum 并行参数及其作用:

1. 并行度控制参数这些参数用于控制查询执行的并行度,即同时使用多少个 Segment 来处理任务。

•gp_resource_manager 指定资源管理器类型,可选值为 group(基于资源组)或 queue(基于资源队列)。 

示例:SET gp_resource_manager = 'group';

•gp_resource_group_concurrency 控制资源组的并发查询数。 

示例:SET gp_resource_group_concurrency = 20;

•gp_resqueue_priority 启用或禁用查询优先级调度。 

示例:SET gp_resqueue_priority = ON;

•gp_max_parallel_workers_per_gather 控制每个 Gather 操作(汇总结果)的最大并行工作进程数。 示例:SET gp_max_parallel_workers_per_gather = 8;

•gp_interconnect_queue_depth 控制节点间数据传输的队列深度,影响并行查询的通信性能。 

示例:SET gp_interconnect_queue_depth = 16;

2. 资源分配参数这些参数用于控制查询执行时的资源分配,如内存、CPU 等。•statement_mem 设置单个查询可以使用的最大内存量。 

示例:SET statement_mem = '2GB';

•max_statement_mem 设置所有查询的最大内存总量。 

示例:SET max_statement_mem = '10GB';

•gp_vmem_protect_limit 设置每个 Segment 的最大内存使用量,防止内存溢出。

 示例:SET gp_vmem_protect_limit = '8GB';

•gp_workfile_limit_files_per_query 控制每个查询可以创建的临时文件数量,用于防止磁盘空间耗尽。 

示例:SET gp_workfile_limit_files_per_query = 10000;

3. 并行执行优化参数这些参数用于优化并行查询的执行行为。

•gp_enable_parallel_append 控制是否启用并行追加(Parallel Append)操作。 

示例:SET gp_enable_parallel_append = ON;

•gp_enable_parallel_hash 控制是否启用并行哈希连接(Parallel Hash Join)。 

示例:SET gp_enable_parallel_hash = ON;

•gp_enable_parallel_sort 控制是否启用并行排序(Parallel Sort)。 

示例:SET gp_enable_parallel_sort = ON;

•gp_enable_global_deadlock_detector 控制是否启用全局死锁检测器,用于避免分布式死锁。 示例:SET gp_enable_global_deadlock_detector = ON;

4. 节点间通信参数这些参数用于优化节点间的数据传输和通信性能。

•gp_interconnect_type 设置节点间通信协议,可选值为 UDP 或 TCP。 

示例:SET gp_interconnect_type = 'UDP';•gp_interconnect_snd_queue_depth 控制发送队列的深度,影响数据传输性能。 

示例:SET gp_interconnect_snd_queue_depth = 16;

•gp_interconnect_rcv_queue_depth 控制接收队列的深度,影响数据传输性能。 

示例:SET gp_interconnect_rcv_queue_depth = 16;

5. 统计信息与优化器参数这些参数用于控制统计信息和查询优化器的行为。•gp_autostats_mode 控制自动统计信息收集的行为,可选值为 ON_NO_STATS、ON_CHANGE 或 NONE。

 示例:SET gp_autostats_mode = 'ON_CHANGE';•gp_enable_predicate_propagation 控制是否启用谓词下推优化。 

示例:SET gp_enable_predicate_propagation = ON;•gp_enable_multiphase_agg 控制是否启用多阶段聚合优化。 

示例:SET gp_enable_multiphase_agg = ON;

6. 并行加载参数这些参数用于优化并行数据加载的性能。

•gp_parallel_procs 控制并行加载时的并发进程数。 

示例:SET gp_parallel_procs = 16;

•gp_external_max_segs 控制外部表扫描时的最大 Segment 数。 

示例:SET gp_external_max_segs = 64;

7. 其他常用参数

•gp_fts_probe_timeout 设置故障检测服务的超时时间。 

示例:SET gp_fts_probe_timeout = '10s';

•gp_segment_connect_timeout 设置 Segment 连接的超时时间。 

示例:SET gp_segment_connect_timeout = '180s';

DML并行相关的参数:

1. **gp_vmem_protect_limit**:这个参数用于控制每个Greenplum节点进程可以使用的内存量。通过调整这个参数,可以影响并行查询的性能和资源分配。

2. **gp_workfile_limit_per_segment**:这个参数用于限制每个Segment节点上生成的临时工作文件的数量。通过调整这个参数,可以控制并行查询过程中临时文件的使用,从而优化性能。

3. **gp_max_distributed joins**:这个参数用于限制并行查询中分布式连接的最大数量。通过调整这个参数,可以控制并行查询的复杂度和资源使用。

4. **gp_parallel_dml**:这个参数用于控制是否启用并行DML操作。将其设置为on可以启用并行DML,从而提高数据插入、更新和删除的性能。

5. **gp_parallel_tuple_cost**:这个参数用于估计并行查询中每个元组的成本。通过调整这个参数,可以影响查询优化器选择并行执行计划的决策。

6. `gp_enable_global_deadlock_detector`
- **作用**: 启用全局死锁检测器,避免在并行执行 DML 时出现死锁。
- **默认值**: `on`
- **建议**: 在并发 DML 操作较多时,建议启用此参数。

7. `gp_enable_fast_sri`
- **作用**: 启用快速序列化隔离级别(Serializable Isolation Level),提高并行 DML 操作的性能。
- **默认值**: `off`
- **建议**: 在需要高并发 DML 操作时,可以尝试启用此参数。

8. `gp_autostats_mode`
- **作用**: 控制自动统计信息收集的行为,影响 DML 操作后的统计信息更新。
- **默认值**: `on_no_stats`
- **建议**: 根据数据变化频率调整,频繁 DML 操作时建议设置为 `on_change`。

9. `gp_workfile_compression`
- **作用**: 控制工作文件是否压缩,影响 DML 操作的磁盘 I/O 性能。
- **默认值**: `off`
- **建议**: 在磁盘 I/O 成为瓶颈时,可以启用此参数以减少磁盘空间使用。

10. `gp_resqueue_priority`
- **作用**: 设置查询优先级,影响 DML 操作的资源分配。
- **默认值**: `off`
- **建议**: 在高并发环境下,可以启用此参数以优先处理重要 DML 操作。

11. `gp_parallel_retrieve_cursor`
- **作用**: 控制并行检索游标的数量,影响 DML 操作的并发度。
- **默认值**: `off`
- **建议**: 在需要高并发 DML 操作时,可以启用此参数。

12. `gp_max_packet_size`
- **作用**: 设置网络传输的最大数据包大小,影响 DML 操作的网络传输性能。
- **默认值**: `8192`
- **建议**: 在网络带宽充足的情况下,可以适当增大此参数以提高传输效率。

13. `gp_segment_connect_timeout`
- **作用**: 设置段服务器连接超时时间,影响 DML 操作的连接稳定性。
- **默认值**: `10min`
- **建议**: 在网络不稳定的环境下,可以适当增大此参数以避免连接超时。

14. `gp_connections_per_thread`
- **作用**: 设置每个线程的最大连接数,影响 DML 操作的并发度。
- **默认值**: `1`
- **建议**: 在高并发环境下,可以适当增大此参数以提高并发处理能力。

15. `gp_interconnect_type`
- **作用**: 设置段服务器之间的互联类型,影响 DML 操作的网络传输性能。
- **默认值**: `TCP`
- **建议**: 在高速网络环境下,可以设置为 `UDP` 以提高传输效率。

### 示例配置
```sql
SET gp_enable_global_deadlock_detector = on;
SET gp_enable_fast_sri = on;
SET gp_autostats_mode = on_change;
SET gp_workfile_compression = on;
SET gp_resqueue_priority = on;
SET gp_parallel_retrieve_cursor = on;
SET gp_max_packet_size = 16384;
SET gp_segment_connect_timeout = '20min';
SET gp_connections_per_thread = 2;
SET gp_interconnect_type = 'UDP';
 

总结Greenplum 的并行参数涵盖了并行度、资源分配、优化器行为、节点通信等多个方面。通过合理配置这些参数,可以显著提升查询性能和系统稳定性。在实际使用中,建议根据具体的工作负载和硬件资源进行调整,并通过测试验证参数设置的效果。

- 并行度配置可以在系统级别、数据库级别或会话级别进行设置。使用上述方法查看的是当前会话或系统的并行度配置。
- 如果你在多个节点上运行Greenplum集群,确保所有节点的并行度配置一致,以避免潜在的性能问题。
- 并行度配置会影响系统的资源消耗和性能。根据实际需求和硬件资源合理设置并行度。

通过以上方法,你可以查看Greenplum数据库的并行度配置,并根据需要进行调整。

相关文章:

CloudberryDB(四)并行执行

要查看CloudberryDB & Greenplum数据库的并行度配置,可以使用以下几种方法: ### 方法一:使用SHOW命令 在Greenplum数据库中,可以使用SHOW命令来查看当前的并行度配置。例如: sql SHOW gp_parallel_degree ; SH…...

LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS

题目 大型语言模型是人类级别的提示工程师 论文地址:https://arxiv.org/abs/2211.01910 项目地址:https://github.com/keirp/automatic_prompt_engineer 摘要 通过对自然语言指令进行调节,大语言模型 (LLM) 显示了作为通用计算机的令人印象深…...

rabbitmq安装延迟队列

在RabbitMQ中,延迟队列是一种特殊的队列类型。当消息被发送到此类队列后,不会立即投递给消费者,而是会等待预设的一段时间,待延迟期满后才进行投递。这种队列在多种场景下都极具价值,比如可用于处理需要在特定时间触发…...

Kubernetes (K8s) 入门指南

Kubernetes (K8s) 入门指南 什么是Kubernetes? Kubernetes,通常简称为 K8s(因为从 “K” 到 “s” 之间有八个字符),是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由谷歌设…...

Python 调用 Ollama 库:本地大语言模型使用详解

ollama 是一个用于调用本地大语言模型(Large Language Models,LLMs)的 Python 库,旨在提供简单、高效的 API 接口,以便开发者能够方便地与本地的大语言模型进行交互。以下是关于如何在 Python 中使用 ollama 库的详细介…...

python matplotlib绘图,显示和保存没有标题栏和菜单栏的图像

目录 1. 使用plt.savefig保存无边框图形 2. 显示在屏幕上,并且去掉窗口的标题栏和工具栏 3. 通过配置 matplotlib 的 backend 和使用 Tkinter(或其他图形库) 方法 1:使用 TkAgg 后端,并禁用窗口的工具栏和标题栏 …...

无人机(Unmanned Aerial Vehicle, UAV)路径规划介绍

无人机(Unmanned Aerial Vehicle, UAV)是无人驾驶飞行器的简称。凭借其体积小巧、操作简便、生存能力强等诸多优势,无人机在军事、电力巡检、航空航天与科学研究等诸多领域得到了广泛应用。在执行任务时,无人机可搭载多种传感器设…...

python爬虫入门(实践)

python爬虫入门(实践) 一、对目标网站进行分析 二、博客爬取 获取博客所有h2标题的路由 确定目标,查看源码 代码实现 """ 获取博客所有h2标题的路由 """url "http://www.crazyant.net"import re…...

于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们主要来学习单个函数的声明与定义,static和extern… 这里写目录标题 一、单个函数…...

python实现pdf转word和excel

一、引言   在办公中,我们经常遇收到pdf文件格式,因为pdf格式文件不易修改,当我们需要编辑这些pdf文件时,经常需要开通会员或收费功能才能使用编辑功能。今天,我要和大家分享的,是如何使用python编程实现…...

Pandas使用笔记

个人学习笔记 日期转换 索引日期格式:2023-09-12 15:00:00 转换为:2023-09-12 import pandas as pd# 假设你的 DataFrame 名为 df,索引是 2023-09-12 15:00:00 # 这里创建一个示例 DataFrame 用于演示 data {value: [1, 2, 3]} index pd…...

高等数学学习笔记 ☞ 定积分与积分公式

1. 定积分的基本概念 1.1 定积分的定义 1. 定义:设函数在闭区间上有界。在闭区间上任意插入若干个分点,即, 此时每个小区间的长度记作(不一定是等分的)。然后在每个小区间上任意取,对应的函数值为。 为保证每段的值(即矩形面积)无…...

wow-agent---task2使用llama-index创建Agent

一:创造俩个函数,multiply和add作为fuction calling被LLM当做工具来使用,实现计算一个简单的计算题: from llama_index.llms.ollama import Ollama from llama_index.core.agent import ReActAgent from llama_index.core.tools …...

RabbitMQ实现延迟消息发送——实战篇

在项目中,我们经常需要使用消息队列来实现延迟任务,本篇文章就向各位介绍使用RabbitMQ如何实现延迟消息发送,由于是实战篇,所以不会讲太多理论的知识,还不太理解的可以先看看MQ的延迟消息的一个实现原理再来看这篇文章…...

Oracle 拉链式merge sort join 原理

Oracle 拉链式Merge Sort Join 的原理,我用一个生活中的比喻来解释。 --- 比喻场景:匹配快递包裹和收件人 1. 快递包裹清单 想象我们有一个快递公司送货的包裹清单,清单按照收件人的邮编(ZIP Code)排序: …...

QModbusTCPClient占用内存持续增长

最近使用QModbusTCPClient通信,需要频繁发送读写请求,发现软件占用内存一直在增减,经过不断咨询和尝试,终于解决了。 1.方案一(失败) 最开始以为是访问太频繁,导致创建reply的对象比delete re…...

代码中使用 Iterable<T> 作为方法参数的解释

/*** 根据课程 id 集合查询课程简单信息* param ids id 集合* return 课程简单信息的列表*/ GetMapping("/courses/simpleInfo/list") List<CourseSimpleInfoDTO> getSimpleInfoList(RequestParam("ids") Iterable<Long> ids); 一、代码解释&…...

Oracle数据库传统审计怎么用

Oracle数据库传统审计怎么用 审计功能开启与关闭By Session还是By AccessWhenever Successful数据库语句审计数据库对象审计查看审计策略和记录Oracle数据库审计功能分为传统审计(Traditional Auditing)和统一审计(Unified Auditing)。统一审计是从Oracle 12c版本开始引入的…...

leetcode-买卖股票问题

309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 动态规划解题思路&#xff1a; 1、暴力递归&#xff08;难点如何定义递归函数&#xff09; 2、记忆化搜索-傻缓存法&#xff08;根据暴力递归可变参数确定缓存数组维度&#xff09; 3、严格表结构依…...

MYSQL学习笔记(三):分组、排序、分页查询

前言&#xff1a; 学习和使用数据库可以说是程序员必须具备能力&#xff0c;这里将更新关于MYSQL的使用讲解&#xff0c;大概应该会更新30篇&#xff0c;涵盖入门、进阶、高级(一些原理分析);这一篇是讲解分组、排序、分页查询&#xff0c;并且结合案例进行讲解&#xff1b;虽…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...