Tanzu Greenplum(初步介绍)

2023-03-07 00:00:00 数据 数据库 事务 镜像 主机

Tanzu Greenplum

官网

详情

Tanzu Greenplum是一种大规模并行数据库服务器,支持下一代数据仓库和大规模处理。通过自动分区数据和与运行并行查询,它允许服务器集群作为单个数据库超级计算机运行,其执行速度是传统数据库的数十倍或者百倍。支持SQL,MR并行处理和从数百GB到数百TB的数据量。

服务器文档

Tanzu Greenplum安装、配置、管理和维护信息
发行说明
安装指南
管理员指南
安全配置指南
-佳实践指南
实用指南
参考指南
PSQL快速参考
平台扩展框架(PXF)

发行说明

Release 6.18.0
发行日期:2021-10-8
说明:该版本是一个次要版本,其中包括功能更改并解决了多个问题。

特征:

Greenplum Database 6.18.0 包括这些新的和改变的特性:
gpstate -egpstate -s 命令现在提供有关主镜像段 WAL 同步状态的更详细的输出。此外,作为这些输出变化的一部分:
gpstate -s 输出字段更改跟踪数据大小、估计要同步的总数据和数据同步输出字段现已消失
主要段的 gpstate -s 输出中的镜像状态字段现在只有两个有效值:同步或不同步

Greenplum 6.18.0 引入了一个新的查询优化器服务器配置参数,optimizer_xform_bind_threshold。通过指定 GPORCA 为每个组表达式生成的每个转换的大绑定数,您可以使用此参数来减少包含深度嵌套表达式的查询的优化时间和总体内存使用量。

新的 gp_autostats_allow_nonowner 服务器配置参数使您能够配置 Greenplum 数据库以在表被非所有者更新时触发对表的自动统计信息收集。该参数默认关闭。

Greenplum 6.18.0 引入了新的 contrib 模块 gp_legacy_string_agg。该模块实现了 Greenplum 5 中可用的单参数 string_agg( text ) 函数;您可以选择使用该模块来帮助迁移到 Greenplum 6

Windows 客户端和加载程序工具包的许可证文件已更新到新版本。

Greenplum 6.18.0 删除了 ~/.gphostcache 文件;管理实用程序现在使用替代机制将主机名映射到接口。

为了增强产品的可支持性并帮助调试工作,Greenplum 数据库现在在遇到内存不足 (OOM) 情况时报告保留和大虚拟内存分配。

问题:

不支持将Greenplum DataBase 4 版本升级到VMare Tanzu Greenplum 6.通过gpupgrade支持将Greenplum DataBase 5.X版本升级到VMare Tanzu Greenplum 6.

安装指南

简介:

Greenplum数据库系统架构的高-级概述:
Greenplum数据库通过在多个服务器或主机之间分配负载来存储和处理大量数据。Greenplum中逻辑数据库是一组单独PostgreSQL数据库,它们一起工作以呈现单个数据库映像。mastergreenplum数据库的入口。它是用户链接并提交SQL语句的数据库实例。master协调系统中其他数据库实例的工作负载,成为段。处理数据处理和存储,这些段通过互联(greenplum数据库的网络层)相互通信并与主节点通信。
Greenplum数据库是纯软件解决方案;硬件和数据库软件不耦合。Greenplum数据库运行来自Greenplum认证硬件供应商的各种商品服务器平台上。性能取决于安装它的硬件。由于数据库分布在Greenplum数据库系统中多台机器上,因此正确选择和配置硬件对于实习那-佳性能至关重要。
本章描述了 Greenplum 数据库系统的主要组件以及与每个组件相关的硬件注意事项和概念:Greenplum MasterSegmentsThe Interconnect。此外,系统可能有可选的 ETL 主机用于数据加载和 Greenplum 性能监控,用于监控查询工作负载和性能。

Master

master是Greenplum数据库系统的入口点。数据库服务器进程接受客户端连接并处理系统用户发出的 SQL 命令。用户使用 psql 或 ODBC 等与 PostgreSQL 兼容的客户端程序通过 master 连接到 Greenplum Database。
master 维护系统目录(一组系统表,包含有关 Greenplum Database 系统本身的元数据),但是 master 不包含任何用户数据。数据仅驻留在段上。 master 验证客户端连接,处理传入的 SQL 命令,在段之间分配工作负载,协调每个段返回的结果,并将终结果呈现给客户端程序。
由于 master 不包含任何用户数据,因此它的磁盘负载很小。 Master 需要一个快速、专用的 CPU 来进行数据加载、连接处理和查询规划,因为通常需要额外的空间来加载加载文件和备份文件,尤其是在生产环境中。客户可能决定还在主服务器上运行 ETL 和报告工具,这需要更多的磁盘空间和处理能力。

Master Redundancy

您可以选择部署主实例的备份或镜像。如果主要主控主机无法运行,备份主控主机将用作热备份。您可以在指定的冗余主控主机或网段主机之一上部署备用主控。
备用主控通过事务日志复制过程保持新,该过程在备用主控主机上运行并同步主控和备用主控主机之间的数据。如果主要 master 发生故障,日志复制过程将关闭,管理员可以在其位置激活备用 master。当备用 master 处于活动状态时,复制的日志用于重建后一次成功提交事务时 master 主机的状态。
由于 master 不包含任何用户数据,因此只需要在主副本和备份副本之间同步系统目录表。当这些表更新时,更改会自动复制到备用主服务器,因此它始终与主服务器同步。

Segment


在Greenplum数据库中,段是存储数据的地方,也是大多数查询处理发生的地方。用户定义的表及其索引分布在Greenplum数据库系统中的可用段中;每个段包含数据的不同部分。段实例是为段提供服务的数据库服务器进程。用户不直接与 Greenplum 数据库系统中的段交互,而是通过主节点进行交互。
在参考 Greenplum 数据库硬件配置中,每个段主机的段实例数由有效 CPU 或 CPU 内核的数量决定。例如,如果您的 Segment 主机有两个双核处理器,则每个主机可能有两个或四个主要 Segment。如果您的段主机有三个四核处理器,则每个主机可能有三个、六个或十二个段。性能测试将有助于确定所选硬件平台的-佳段数。

Segment Redundancy

段冗余
当您部署 Greenplum 数据库系统时,您可以选择配置镜像段。如果主段变得不可用,镜像段允许数据库查询故障转移到备份段。镜像是 VMware 支持的 Greenplum 生产系统的要求。
镜像段必须始终位于与其主段不同的主机上。镜像段可以以两种标准配置之一或您设计的自定义配置跨系统中的主机排列。默认配置称为组镜像,将所有主段的镜像段放置在另一台主机上。另一种称为扩展镜像的选项将每个主机的主要段的镜像扩展到其余主机上。扩展镜像要求系统中的主机数多于主机上的主段数。在具有多个网络接口的主机上,主段和镜像段在接口之间平均分配。

段故障转移和恢复

在Greenplum数据库系统中启用镜像时,如果主副本不可用,系统会自动故障转移到镜像副本。只有在剩余活动段上所有数据部分都可用时,如哦段实例或者主机出现故障,Greemplum数据库次啊能保持运行。
如果 master 无法连接到一个段实例,它会在 Greenplum 数据库系统目录中将该段实例标记为无-效。段实例将保持无-效和停止运行,直到管理员将该段重新联机。管理员可以在系统启动并运行时恢复故障段。恢复过程仅复制段不可用时丢失的更改。
如果您没有启用镜像并且某个段无-效,系统会自动关闭。在操作可以继续之前,管理员必须恢复所有失败的段。

段主机硬件堆栈示例

段主机硬件堆栈示例
无论您选择何种硬件平台,生产 Greenplum 数据库处理节点(段主机)通常都按本节所述进行配置。
段主机执行大部分数据库处理,因此段主机服务器的配置是为了从您的 Greenplum 数据库系统中获得-佳性能。 Greenplum 数据库的性能将与阵列中慢的段服务器一样快。因此,确保运行Greenplum数据库的底层硬件和操作系统都以-佳性能水平运行非常重要。还建议 Greenplum 数据库阵列中的所有段主机具有相同的硬件资源和配置。
Segment 主机也应该专用于 Greenplum 数据库操作。为了获得-佳查询性能,您不希望 Greenplum Database 与其他应用程序竞争机器或网络资源。
下图显示了一个示例 Greenplum 数据库段主机硬件堆栈。主机上有效 CPU 的数量是确定每个 Segment 主机部署多少主要 Greenplum 数据库 Segment 实例的基础。此示例显示具有两个有效 CPU(一个双核 CPU)的主机。请注意,每个 CPU 内核有一个主段实例(或主/镜像对,如果使用镜像)。

段磁盘布局示例

每个 CPU 通常映射到一个逻辑磁盘。逻辑磁盘由一个主文件系统(和可选的镜像文件系统)组成,通过 I/O 通道或磁盘控制器访问物理磁盘池。逻辑磁盘和文件系统由操作系统提供。大多数操作系统都为逻辑磁盘驱动器提供了使用排列在 RAID 阵列中的物理磁盘组的能力。

互连

互连是Greenplum数据库的网络层。当用户连接到数据库并发出查询时,会在每个段上创建进程以处理该查询的工作。互连是指段之间的进程间通信,以及这种通信所依赖的网络基础设施。互连使用标准的 10 Gb 以太网交换结构。
默认情况下,Greenplum 数据库互连使用带有流量控制的 UDP(用户数据报协议)来控制互连流量通过网络发送消息。 Greenplum软件做了UDP没有的额外数据包验证和检查,所以可靠性相当于TCP(传输控制协议),性能和扩展性超过TCP。有关 Greenplum 数据库支持的互连类型的信息,请参阅 Greenplum 数据库参考指南中的服务器配置参数 gp_interconnect_type。

互连冗余

通过在您的网络上部署双 10 Gb 以太网交换机以及与 Greenplum 数据库主服务器和段主机服务器的冗余 10 Gb 连接,可以实现高度可用的互连。

网络接口配置

一个段主机通常有多个网络接口,指定给 Greenplum 互连流量。除了用于互连流量的接口之外,主控主机通常还有额外的外部网络接口。
根据可用接口的数量,您需要在可用接口数量上分配互连网络流量。这是通过将段实例分配给特定网络接口并确保主要段在可用接口数量上均匀平衡来完成的。
这是通过为每个网络接口创建单独的主机地址名称来完成的。例如,如果一台主机有四个网络接口,那么它将有四个对应的主机地址,每个地址都映射到一个或多个主段实例。 /etc/hosts 文件应该配置为不仅包含每台机器的主机名,还包含所有 Greenplum 数据库主机(主、备用主、段和 ETL 主机)的所有接口主机地址。
使用此配置,操作系统会自动选择到达目的地的-佳路径。 Greenplum 数据库自动平衡网络目的地以大化并行性。

交换机配置

在您的 Greenplum 数据库阵列中使用多个 10 Gigabit 以太网交换机时,请在每个交换机之间平均划分子网数量。在此示例配置中,如果我们有两个交换机,每个主机上的 NIC 12 将使用交换机 1,每个主机上的 NIC 34 将使用交换机 2。对于主控主机,主机名绑定到 NIC 1(因此using switch 1) 是阵列的有效主主机名。因此,如果出于冗余目的部署热备用主站,备用主站应映射到使用与主主站不同的交换机的 NIC。

用于数据加载ETL主机

Greenplum 通过其外部表功能支持快速、并行的数据加载。通过将外部表与 Greenplum 数据库的并行文件服务器 (gpfdist) 结合使用,管理员可以从他们的 Greenplum 数据库系统中实现大的并行性和负载带宽。许多生产系统部署指定的 ETL 服务器用于数据加载目的。这些机器运行 Greenplum 并行文件服务器 (gpfdist),但不运行 Greenplum 数据库实例。
使用 gpfdist 文件服务器程序的一个优点是它可以确保在读取外部表数据文件时充分利用 Greenplum 数据库系统中的所有段。
gpfdist 程序可以以大约 350 MB/s 的分隔文本格式文件和 200 MB/s 的 CSV 格式文件的平均速率向段实例提供数据。因此,您在运行 gpfdist 时应该考虑以下选项,以大化您的 ETL 系统的网络带宽:
如果您的 ETL 机器配置了多个网络接口卡 (NIC),如网络接口配置中所述,请在您的 ETL 主机上运行一个 gpfdist 实例,然后定义您的外部表定义,以便在 LOCATION 中声明每个 NIC 的主机名子句(参见 Greenplum 数据库参考指南中的 CREATE EXTERNAL TABLE)。这允许 Greenplum 段主机和 ETL 主机之间的网络流量同时使用所有 NIC。

Greenplum 性能监控

Greenplum 数据库包括一个专用的系统监控和管理数据库,名为 gpperfmon,管理员可以安装和启用。启用此数据库后,每个段主机上的数据收集代理会收集查询状态和系统指标。每隔一定时间(通常每 15 秒),Greenplum 主服务器上的代理从段代理请求数据并更新 gpperfmon 数据库。用户可以查询 gpperfmon 数据库以查看存储的查询和系统指标。有关更多信息,请参阅 Greenplum 数据库参考指南中的“gpperfmon 数据库参考”。
Greenplum Command Center 是一个可选的基于 Web 的 Greenplum 数据库性能监控和管理工具,基于 gpperfmon 数据库。管理员可以独立于 Greenplum 数据库安装 Command Center。

end

管理员指南

有关配置、管理和监控Greenplum数据库安装以及管理、监控和使用数据有关Greenplum数据库架构。Greenplum数据库组件和特性,例如高性能、并发数据加载特性和管理实用程序。

Greenplum数据库概念

概述Greenplum数据库组件和特性,例如高可用性、并行数据加载特性和管理使用程序。

Greenplum架构

Greenplum Database 是一种大规模并行处理 (MPP) 数据库服务器,其架构专门设计用于管理大规模分析数据仓库和商业智能工作负载。
MPP(也称为无共享架构)是指具有两个或多个处理器合作执行操作的系统,每个处理器都有自己的内存、操作系统和磁盘。 Greenplum 使用这种高性能系统架构来分配数 TB 数据仓库的负载,并且可以并行使用系统的所有资源来处理查询。
Greenplum 数据库基于 PostgreSQL 开源技术。它本质上是几个 PostgreSQL 面向磁盘的数据库实例,它们共同作为一个内聚的数据库管理系统 (DBMS)。它基于 PostgreSQL 9.4,在大多数情况下,在 SQL 支持、特性、配置选项和终用户功能方面与 PostgreSQL 非常相似。数据库用户与 Greenplum 数据库进行交互,就像与常规 PostgreSQL DBMS 进行交互一样。
Greenplum 数据库可以使用追加优化 (AO) 存储格式来批量加载和读取数据,并提供优于 HEAP 表的性能优势。追加优化存储为数据保护、压缩和行/列方向提供校验和。面向行或面向列的追加优化表都可以压缩。
Greenplum数据库和PostgreSQL的主要区别如下:
除了 Postgres Planner 之外,GPORCA 还用于查询计划。
Greenplum 数据库可以使用追加优化存储。
Greenplum 数据库可以选择使用列存储,即逻辑上组织为表的数据,使用以面向列的格式而不是行的物理存储的行和列。列存储只能用于追加优化表。列存储是可压缩的。它还可以提供性能改进,因为您只需要将感兴趣的列返回给您。所有压缩算法都可以用于面向行的表或面向列的表,但运行长度编码 (RLE) 压缩只能用于面向列的表。 Greenplum 数据库对所有使用列存储的追加优化表提供压缩。
PostgreSQL 的内部结构进行了修改或补充,以支持 Greenplum 数据库的并行结构。例如,系统目录、优化器、查询执行器和事务管理器组件已被修改和增强,以便能够跨所有并行 PostgreSQL 数据库实例同时运行查询。 Greenplum 互连(网络层)支持不同 PostgreSQL 实例之间的通信,并允许系统作为一个逻辑数据库运行。
Greenplum 数据库还可以使用声明式分区和子分区来隐式生成分区约束。
Greenplum 数据库还包括旨在针对商业智能 (BI) 工作负载优化 PostgreSQL 的功能。例如,Greenplum 增加了并行数据加载(外部表)、资源管理、查询优化和存储增强,这些在标准 PostgreSQL 中是没有的。 Greenplum 开发的许多功能和优化都进入了 PostgreSQL 社区。例如,表分区是Greenplum首先开发的一个特性,现在在标准PostgreSQL中。
Greenplum 数据库查询使用 Volcano 式查询引擎模型,其中执行引擎采用执行计划并使用它生成物理运算符树,通过物理运算符评估表,并在查询响应中提供结果。
Greenplum 数据库通过跨多个服务器或主机分布数据和处理工作负载来存储和处理大量数据。 Greenplum 数据库是一组基于 PostgreSQL 9.4 的单个数据库,它们协同工作以呈现单个数据库映像。 masterGreenplum数据库系统的入口点。它是客户端连接并提交 SQL 语句的数据库实例。主节点与系统中的其他数据库实例(称为段)协调其工作,这些实例存储和处理数据。
Greenplum Database masterGreenplum Database 系统的入口,接受客户端连接和SQL 查询,并将工作分配给segment 实例。
Greenplum 数据库终用户与 Greenplum 数据库(通过主)交互,就像他们与典型的 PostgreSQL 数据库一样。它们使用客户端程序(例如 psql)或应用程序编程接口 (API)(例如 JDBCODBClibpqPostgreSQL C API))连接到数据库。
master 是全局系统目录所在的位置。全局系统目录是一组系统表,其中包含有关 Greenplum 数据库系统本身的元数据。主站不包含任何用户数据;数据仅驻留在段上。 master 验证客户端连接,处理传入的 SQL 命令,在段之间分配工作负载,协调每个段返回的结果,并将终结果呈现给客户端程序。
Greenplum 数据库使用预写日志 (WAL) 进行主/备用主镜像。在基于 WAL 的日志记录中,所有修改都在应用之前写入日志,以确保任何进程内操作的数据完整性。

关于Greenplum细分市场

Greenplum 数据库段实例是独立的 PostgreSQL 数据库,每个数据库存储一部分数据并执行大部分查询处理。
当用户通过 Greenplum master 连接到数据库并发出查询时,每个段数据库中都会创建进程来处理该查询的工作。有关查询过程的更多信息,请参阅关于 Greenplum 查询处理。
用户定义的表及其索引分布在 Greenplum 数据库系统中的可用段中;每个段包含数据的不同部分。为段数据提供服务的数据库服务器进程在相应的段实例下运行。用户通过 master 与 Greenplum 数据库系统中的段进行交互。
段在称为段主机的服务器上运行。一个段主机通常运行 28 个 Greenplum 段,具体取决于 CPU 内核、RAM、存储、网络接口和工作负载。 Segment 主机应具有相同的配置。从 Greenplum 数据库获得-佳性能的关键是将数据和工作负载均匀地分布在大量具有同等能力的段中,以便所有段同时开始处理任务并同时完成它们的工作。

关于Greenplum互连

互连是Greenplum数据库架构的网络层。
互连是指段之间的进程间通信以及该通信所依赖的网络基础设施。 Greenplum 互连使用标准以太网交换结构。出于性能原因,建议使用 10 Gb 或更快的系统。
默认情况下,互连使用带有流量控制的用户数据报协议 (UDPIFC) 来处理互连流量以通过网络发送消息。 Greenplum 软件执行超出 UDP 提供的数据包验证。这意味着可靠性相当于传输控制协议(TCP),性能和可扩展性超过 TCP。如果互连改为 TCPGreenplum 数据库的可扩展性限制为 1000 个段实例。由于 UDPIFC 作为互连的默认协议,此限制不适用。

关于管理和监控使用程序

Greenplum数据库提供标准的命令行使用程序来执行常见的监控和管理任务。

Greenplum 数据库提供标准的命令行实用程序来执行常见的监控和管理任务。
Greenplum 命令行实用程序位于 $GPHOME/bin 目录中,并在 master 主机上运行。 Greenplum 为以下管理任务提供实用程序:
在阵列上安装Greenplum数据库

初始化一个Greenplum数据库系统

启动和停止Greenplum数据库

添加或删除主机

扩展数组并在新段之间重新分配表

管理故障段实例的恢复

管理故障主实例的故障转移和恢复

备份和恢复数据库(并行)

并行加载数据

在 Greenplum 数据库之间传输数据

系统状态报告
Greenplum 数据库包括一个可选的性能管理数据库,其中包含查询状态信息和系统指标。 gpperfmon_install 管理实用程序创建名为 gpperfmon 的数据库,并启用在 Greenplum 数据库 master 和 segment 主机上执行的数据收集代理。段主机上的数据收集代理从段收集查询状态,以及 CPU 和内存利用率等系统指标。主控主机上的代理定期(通常每 15 秒)从段主机代理检索数据并更新 gpperfmon 数据库。用户可以查询 gpperfmon 数据库以查看查询和系统指标。
Pivotal 提供可选的系统监控和管理工具 VMware Tanzu Greenplum Command Center,管理员可以使用 VMware Tanzu Greenplum 安装和启用该工具。 Greenplum Command Center 提供了一个基于 Web 的用户界面,用于查看系统指标,并允许管理员执行其他系统管理任务。

关于Greenplum数据库中的并发控制

Greenplum数据库使用PostGreSQL多版本并发控制(MVCC)模型俩管理堆表的并发事务。

关于Greenplum数据库中的并发控制
Greenplum 数据库使用 PostgreSQL 多版本并发控制 (MVCC) 模型来管理堆表的并发事务。
数据库管理系统中的并发控制允许并发查询以正确的结果完成,同时确保数据库的完整性。传统数据库使用两阶段锁定协议,防止一个事务修改另一个并发事务已读取的数据,并防止任何并发事务读取或写入另一个事务已更新的数据。协调事务所需的锁增加了数据库的争用,降低了整体事务吞吐量。
Greenplum 数据库使用 PostgreSQL 多版本并发控制 (MVCC) 模型来管理堆表的并发性。使用 MVCC,当查询开始时,每个查询都会对数据库的快照进行操作。当它运行时,查询无法看到其他并发事务所做的更改。这可确保查询看到数据库的一致视图。读取行的查询永远不会阻塞等待写入行的事务。相反,写入行的查询不能被读取行的事务阻塞。与使用锁来协调读取和写入数据的事务之间的访问的传统数据库系统相比,这允许更高的并发性。

注意:追加优化表使用与本主题中讨论的 MVCC 模型不同的并发控制模型进行管理。它们适用于从不或很少执行行级更新的“一次写入、多次读取”的应用程序。

快照

MVCC 模型取决于系统管理多个版本的数据行的能力。查询在查询开始时对数据库的快照进行操作。快照是在语句或事务开始时可见的一组行。快照确保查询在其执行期间具有一致且有效的数据库视图。
每个事务都分配了一个唯-一的事务 ID (XID),一个递增的 32 位值。当一个新事务开始时,它被分配下一个 XID。未包含在事务中的 SQL 语句被视为单语句事务——隐式添加 BEGINCOMMIT。这类似于某些数据库系统中的自动提交。

注意:Greenplum 数据库只为涉及 DDL 或 DML 操作的事务分配 XID 值,这些事务通常是唯-一需要 XID 的事务。
当事务插入一行时,XID 与 xmin 系统列中的行一起保存。当事务删除一行时,XID 保存在 xmax 系统列中。更新一行被视为删除和插入,因此 XID 保存到当前行的 xmax 和新插入行的 xmin。 xmin 和 xmax 列与事务完成状态一起指定行版本可见的事务范围。一个事务可以看到所有小于xmin的事务的影响,保证被提交,但看不到任何大于或等于xmax的事务的影响。
多语句事务还必须记录事务中的哪个命令插入一行(cmin)或删除一行(cmax),以便事务可以看到事务中先前命令所做的更改。命令序列仅在事务期间相关,因此在事务开始时将序列重置为
XID 是数据库的一个属性。每个段数据库都有自己的 XID 序列,无法与其他段数据库的 XID 进行比较。主节点使用集群范围的会话 ID 号(称为 gp_session_id)协调与段的分布式事务。这些段维护分布式事务 ID 与其本地 XID 的映射。主节点使用两阶段提交协议协调跨所有段的分布式事务。如果一个事务在任何一个段上失败,它就会在所有段上回滚。
您可以使用 SELECT 语句查看任何行的 xmin、xmax、cmin 和 cmax 列:
SELECT xmin, xmax, cmin, cmax, * FROM tablename;
因为您在主服务器上运行 SELECT 命令,所以 XID 是分布式事务 ID。如果您可以在单个段数据库中运行该命令,则 xmin 和 xmax 值将是段的本地 XID。

注意:Greenplum 数据库将复制表的所有行分布到每个段,因此每一行在每个段上都是重复的。每个段实例为系统列 xmin、xmax、cmin 和 cmax 以及 gp_segment_id 和 ctid 系统列维护自己的值。 Greenplum 数据库不允许用户查询访问复制表的这些系统列,因为它们在查询中没有要评估的单一、明确的值。

事务隔离模式

事务隔离模式

SQL 标准描述了数据库事务并发运行时可能出现的三种现象:
脏读——一个事务可以从另一个并发事务中读取未提交的数据。
不可重复读取——在一个事务中读取两次的行可能会发生更改,因为另一个并发事务在事务开始后提交了更改。
幻读——在同一个事务中运行两次的查询可以返回两组不同的行,因为另一个并发事务添加了行。

SQL 标准定义了数据库系统可以支持的四个事务隔离级别,以及每个级别的事务并发运行时允许的现象。
Greenplum 数据库 READ UNCOMMITTED 和 READ COMMITTED 隔离模式的行为类似于 SQL 标准的 READ COMMITTED 模式。 Greenplum 数据库 SERIALIZABLE 和 REPEATABLE READ 隔离模式的行为类似于 SQL 标准的 READ COMMITTED 模式,除了 Greenplum 数据库还防止幻读。
READ COMMITTED 和 REPEATABLE READ 的区别在于,在 READ COMMITTED 中,事务中的每个语句只能看到在语句开始之前提交的行,而在 READ COMMITTED 模式下,事务中的语句只能看到在事务开始之前提交的行。
使用 READ COMMITTED 隔离模式,如果另一个并发事务自事务开始以来已提交更改,则在事务中检索两次的行中的值可能会有所不同。 READ COMMITTED 模式还允许幻读,其中在同一个事务中运行两次的查询可以返回两组不同的行。
REPEATABLE READ 隔离模式可防止不可重复读和幻读,尽管标准不要求后者。尝试修改由另一个并发事务修改的数据的事务将回滚。在 REPEATABLE READ 模式下运行事务的应用程序必须准备好处理由于序列化错误而失败的事务。如果应用程序不需要 REPEATABLE READ 隔离模式,则好使用 READ COMMITTED 模式。
SERIALIZABLE 模式,Greenplum 数据库不完全支持,保证一组事务并发运行产生相同的结果,就好像事务一个接一个地顺序运行一样。如果指定了 SERIALIZABLE,Greenplum 数据库会回退到 REPEATABLE READ。 MVCC 快照隔离 (SI) 模型可以防止脏读、不可重复读和幻读,而无需昂贵的锁定,但是在 Greenplum 数据库中的某些 SERIALIZABLE 事务之间可能会发生其他交互,从而阻止它们真正可序列化。这些异常通常可以归因于 Greenplum 数据库不执行谓词锁定这一事实,这意味着一个事务中的写入可能会影响另一个并发事务中先前读取的结果。

注意:PostgreSQL 9.1 SERIALIZABLE 隔离级别引入了新的 Serializable Snapshot Isolation (SSI) 模型,该模型完全符合可序列化事务的 SQL 标准定义。此模型在 Greenplum 数据库中不可用。 SSI 监视并发事务以查找可能导致序列化异常的条件。当发现潜在的序列化问题时,允许提交一个事务,其他事务回滚并且必须重试。
应该检查并发运行的 Greenplum 数据库事务以识别可能同时更新相同数据的交互。通过使用显式表锁或要求冲突事务更新为表示冲突而引入的虚拟行,可以防止发现的问题。
SQL SET TRANSACTION ISOLATION LEVEL 语句设置当前事务的隔离模式。该模式必须在任何 SELECTINSERTDELETEUPDATE 或 COPY 语句之前设置。

关于并行数据加载

本主题简要介绍了Greenplum数据库数据加载功能。

在大规模、数TB的数据仓库中,必须在相对较小的维护窗口内加载大量数据。Greenplum通过其外部表功能支持快速,并行的数据架子啊。管理员还可以在单行错误隔离模式下加载外部表,将坏行过滤到单独的错误日志中,同时继续加载格式正确的行。管理员可以为加载操作指定一个错误阈值,以控制多个格式不正确的行导致Greenplum取消加载操作。
通过将外部表与 Greenplum 数据库的并行文件服务器 (gpfdist) 结合使用,管理员可以从他们的 Greenplum 数据库系统中实现大的并行性和负载带宽。
另一个 Greenplum 实用程序 gpload 运行您在 YAML 格式的控制文件中指定的加载任务。您在控制文件中描述源数据位置、格式、所需转换、参与主机、数据库目标和其他详细信息,然后 gpload 运行加载。这允许您描述复杂的任务并以受控的、可重复的方式运行它

关于Greenplum数据库中的冗余和故障转移

提供Greenplum数据库高可用性提供高-级概述

您可以通过镜像组件来部署 Greenplum 数据库而不会出现单点故障。以下部分描述了镜像 Greenplum 系统主要组件的策略。有关 Greenplum 高可用性功能的更详细概述,请参阅 Greenplum 数据库高可用性概述。

重要提示:当Greenplum数据库集群不能接受数据丢失时,建议使用Greenplum master和segment镜像。如果没有启用镜像,那么Greenplum 只存储一份数据副本,因此底层存储介质在硬件故障的情况下提供数据可用性和正确性的唯-一保证。

Kubernetes 支持从 pod 和主机故障中快速恢复,Kubernetes 存储服务为底层数据提供高水平的可用性。此外,虚拟化环境使得难以确保 Greenplum 镜像解决方案所需的反关联性保证。由于这些原因,Greenplum for Kubernetes 完全支持无镜像部署。其他部署环境通常不支持用于生产用途,除非同时启用 Greenplum 主镜像和段镜像。

分段镜像

当您部署您的 Greenplum 数据库系统时,您可以配置镜像段实例。如果主段变得不可用,镜像段允许数据库查询故障转移到备份段。镜像段由事务日志复制过程保持新,该过程同步主实例和镜像实例之间的数据。强烈建议对生产系统使用镜像,并且需要 VMware 支持。
作为-佳实践,辅助(镜像)Segment 实例必须始终位于与其主 Segment 实例不同的主机上,以防止单个主机故障。在虚拟化环境中,辅助(镜像)段必须始终驻留在与主段不同的存储系统上。镜像段可以在集群中的其余主机上排列,其配置旨在大限度地提高可用性,或者在主机或多个主段发生故障时大限度地减少性能下降。
当您初始化或扩展 Greenplum 系统时,有两种标准镜像配置可用。默认配置称为组镜像,将主机主要段的所有镜像放置在集群中的另一台主机上。可以使用命令行选项选择另一种标准配置,即扩展镜像。传播镜像将每个主机的镜像传播到其余主机上,并且要求集群中的主机数量多于每个主机的主要段数。

关于Greenplum数据库中的数据库统计

Greenplum数据库中ANALYZE命令手机的统计信息概述

统计信息是描述存储在数据库中的数据的元数据。查询优化器需要新的统计信息来为查询选择-佳执行计划。例如,如果一个查询连接了两个表并且其中一个必须广播到所有段,优化器可以选择两个表中较小的一个来小化网络流量。

优化器使用的统计信息由 ANALYZE 命令计算并保存在系统目录中。可以通过三种方式启动分析操作:
您可以直接运行 ANALYZE 命令。
您可以在数据库外部的命令行中运行analyzedb 管理实用程序。
当对没有统计信息的表执行 DML 操作或当 DML 操作修改的行数大于指定阈值时,可以触发自动分析操作。
这些方法将在以下各节中介绍。 VACUUM ANALYZE 命令是另一种启动分析操作的方法,但不鼓励使用它,因为真空和分析是具有不同目的的不同操作。
计算统计会消耗时间和资源,所以Greenplum数据库通过计算大表样本的统计来产生估计。在大多数情况下,默认设置提供为查询生成正确执行计划所需的信息。如果生成的统计信息没有生成-佳查询执行计划,管理员可以通过增加样本大小或保存在系统目录中的统计信息的粒度来调整配置参数以生成更准确的统计信息。产生更准确的统计数据有 CPU 和存储成本,可能不会产生更好的计划,因此查看解释计划和测试查询性能很重要,以确保额外的与统计相关的成本导致更好的查询性能。

客户文档

Tanzu greenplum的基于UNIX的客户端、负载和连接工具信息
客户段和加载器工具
DataDirect ODBC/JDBC 驱动程序文档

相关文档

相关Tanzu Greenplum文档和使用程序
虚拟内存计算机(用于基于资源队列的工作负载管理)




本文来源:https://blog.csdn.net/m0_51197424/article/details/120888555

相关文章