文档详情

Greenplum 数据库最佳实践 (一).pdf

发布:2025-03-18约5.96万字共80页下载文档
文本预览下载声明

❖介绍

本文介绍PivotalGreenplumDatabase数据库(以下简称:Greenplum

数据库,或GPDB)的最佳实践。

最佳实践是指能持续产生比其他法更好结果的法或者技术,它来自于

实战阅历,并被证明了遵循这些法可以获得牢靠的预期结果。本最佳实

践旨在通过利用全部可能的学问和技术为正确运用GPDB供应有效参考。

本文不是在教您如何运用Grccnplum数据库的功能,而是帮助您在设计、

实现和运用Greenplum数据库时了解须要遵循哪些最佳实践。关于如何

运用和实现具体的Greenplum数据库特性,请参考上的Greenplum

数据库帮助文档以与上的Sandbox和实践指南。

本文H的不是要涵盖整个产品或者产品特性,而是概述GPDB实践中最

重要的因素。本文不涉与依靠于GPDB具体特性的边缘用例,后者须要

精通数据库特性和您的环境,包括SQL访问、查询执行、并发、负载和

其他因素。

通过驾驭这些最佳实践学问,会增加GPDB集群在维护、支持、性能和

可扩展性等面的胜利率。

第一章最佳实践概述

本部分概述了Greenplum数据库最佳实践所涉与的概念与要点。

数据模型

GPDB是一个基于大规模并行处理(MPP)和无共享架构的分析型数据库。

这种数据库的数据模式与高度规范化的事务性SMP数据库显著不同。通

过运用非规范化数据库模式,例如具有大事实表和小维度表的星型或者雪

花模式,GPDB在处理MPP分析型业务时表现优异。

跨表关联(JOI)时字段运用相同的数据类型。

详见数据库模式设计(后续章节)

堆存储和追加优化存储(Append-Optimized,下称AO)

若表和分区表须要进行迭代式的批处理或者频繁执行单个UPDATE、

DELETE或ISERT操作,运用堆存储。

若表和分区表须要并发执行UPDATE、DELETE或ISERT操作,运用

堆存储。

若表和分区表在数据初始加载后更新不频繁,且仅以批处理式插入数据,

则运用AO存储。

不要又寸AO表执行单个ISERT、UPDATE或DELETE操作。

不要对AO表执行并发批量UPDATE或DELETE操作,但可以并发执行

批量ISERT操作。

详见堆存储和AO存储后(续章忖

行存储和列存储

若数据须要常常更新或者插入,则运用行存储。

若须要同时访问一个表的许多字段,则运用行存储。

对于通用或者混合型业务,建议运用行存储。

若查询访问的字段数目较少,或者仅在少量字段上进行聚合操作,则运用

列存储。

若仅常常修改表的某一字段而不修改其他字段,则运用列存储。

详见行存储和列存储后(续章节)

压缩

对于大AO表和分区表运用压缩,以提高系统I/O。

在字段级别配置压缩。

考虑压缩比和压缩性能之间平衡。

详见压缩后(续章节)

分布

为全部表定义分布策略:要么定义分布键,要么运用随机分布。不要运用

缺省分布方式。

优先选择可匀称分布数据单个字段做分布键。

不要选择常常用于WHERE子句字段做分布键。

不要运用日期或时间字段做分布键。

分布键和分区键不要运用同一字段。

对常常执行JOI操作大表,优先考虑运用关联字段做分布键,尽量做

到本地关联,以提高性能。

数据初始加载后或者每次增量加载后,检查数据分布是否匀称。

尽可能避开数据倾斜。

详见分布后(续章节)

内存管理

设置vm.overcommit_memory为2

不要为操作系统页设置过大值

运用gp_vmem_protectjimit设置单个节点数据库(Segment

Database)可以为全部查询安排最大内存量。

不要设置过高gp_vmem

显示全部
相似文档