Greenplum 数据库最佳实践(4)
第二章系统配置
本节描述了Greenplum数据库集群关于主机配置的需求和最佳实践。
? 首选操作系统
红帽企业级Linux(RHEL)是首选操作系统。应使用最新支持的主版本,目前是 RHEL 6。
? 文件系统
Greenplum数据库的数据目录推荐使用 XFS 文件系统。使用以下选项挂载 XFS: rw,noatime,inode64,allocsize=16m
? 端口配置
ip_local_port_range 的设置不要和 Greenplum 数据库的端口范围有冲突,例如: net.ipv4.ip_local_port_range = 3000
65535PORT_BASE=2000MIRROR_PORT_BASE=2100REPLICATION_PORT_BASE=2200MIRROR_REPLICATION_PORT_BASE=2300
? I/O配置
包含数据目录的设备的预读大小应设为 16384. /sbin/blockdev --getra /dev/sdb16384
包含数据目录的设备的 I/O 调度算法设置为 deadline。
# cat /sys/block/sdb/queue/schedulernoop anticipatory [deadline] cfq 通过 /etc/security/limits.conf 增大操作系统文件数和进程数。
* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072 启用core文件转储,并保存到已知位置。确保limits.conf中允许的core转储文件。 kernel.core_pattern = /var/core/core.%h.%t# grep core /etc/security/limits.conf* soft core unlimited
? 操作系统内存配置
Linux sysctl 的 vm.overcommit_memory 和 vm.overcommit_ratio 变量会影响操作系统对内存分配的管理。这些变量应该设置如下:
?
vm.overcommit_memory控制操作系统使用什么方法确定分配给进程的内存总数。对于Greenplum数据库,唯一建议值是2.
? vm.overcommit_ratio 控制分配给应用程序进程的内存百分比。建议使用缺省值50. 不要启用操作系统的大内存页。 详见内存和负载管理。(后续章节)
? 共享内存设置
Greenplum 数据库中同一数据库实例的不同 postgres 进程间通讯使用共享内存。使用 sysctl 配置如下共享内存参数,且不建议修改:
kernel.shmmax = 500000000kernel.shmmni = 4096kernel.shmall = 4000000000
? 验证操作系统
使用 gpcheck 验证操作系统配置。参考《Greenplum数据库工具指南》中的 gpcheck。
? 设置一个主机上段数据库个数
确定每个段主机上段数据库的个数对整体性能有着巨大影响。这些段数据库之间共享主机的 CPU 核、内存、网卡等,且和主机上的所有进程共享这些资源。过高地估计每个服务器上运行的段数据库个数,通常是达不到最优性能的常见原因之一。 以下因素确定了一个主机上可以运行多少个段数据库:
? ? ? ? ?
CPU 核的个数 物理内存容量 网卡个数及速度 存储空间
主段数据库和镜像共存
? ?
主机是否运行 ETL 进程
主机上运行的非 Greenplum 进程
? 段服务器内存配置
服务器配置参数 gp_vmem_protect_limit 控制了每个段数据库为所有运行的查询分配的内存总量。如果查询需要的内存超过此值,则会失败。使用下面公式确定合适的值: (swap + (RAM * vm.overcommit_ratio)) * .9 / number_of_Segments_per_server 例如,具有下面配置的段服务器:
? ? ? ?
8GB 交换空间 128GB 内存
vm.overcommit_ratio = 50 8 个段数据库
则设置gp_vmem_protect_limit为 8GB: (8 + (128 * .5)) * .9 / 8 = 8 GB 参见 内存和负载管理。(后续章节)
? SQL语句内存配置
服务器配置参数 gp_statement_mem 控制段数据库上单个查询可以使用的内存总量。如果语句需要更多内存,则会溢出数据到磁盘。用下面公式确定合适的值: (gp_vmem_protect_limit * .9) / max_expected_concurrent_queries
例如,如果并发度为40, gp_vmeme_protect_limit为8GB,则 gp_statement_mem 为: (8192MB * .9) / 40 = 184MB
每个查询最多可以使用 184MB 内存,之后将溢出到磁盘。
若想安全的增大 gp_statement_mem,要么增大 gp_vmem_protect_limit,要么降低并发。要增大gp_vmem_protect_limit,必须增加物理内存和/或交换空间,或者降低单个主机上运行的段数据库个数。
请注意,为集群添加更多的段数据库实例并不能解决内存不足的问题,除非引入更多新主机来降低了单个主机上运行的段数据库的个数。
了解什么是溢出文件。了解gp_workfile_limit_files_per_query 参数,其控制了单个查询最多可以创建多少个溢出文件。了解gp_workfile_limit_per_Segment。
有关使用资源队列管理内存的更多信息,请参考 内存和负载管理。(后续章节)
? 溢出文件配置
如果为SQL查询分配的内存不足,Greenplum数据库会创建溢出文件(也叫工作文件)。在默认情况下,一个SQL查询最多可以创建 100000 个溢出文件,这足以满足大多数查询。 参数gp_workfile_limit_files_per_query 决定了一个查询最多可以创建多少个溢出文件。0 意味着没有限制。限制溢出文件数据可以防止失控查询破坏整个系统。
如果分配内存不足或者出现数据倾斜,则一个SQL查询可能产生大量溢出文件。如果超过溢出文件上限,Greenplum数据库报告如下错误: ERROR: number of workfiles per query limit exceeded
在尝试增大gp_workfile_limit_files_per_query前,先尝试通过修改 SQL、数据分布策略或者内存配置以降低溢出文件个数。
gp_toolkit模式包括一些视图,通过这些视图可以看到所有使用溢出文件的查询的信息。这些信息有助于故障排除和调优查询:
?
gp_workfile_entries视图的每一行表示一个正在使用溢出文件的操作符的信息。关于操作符,参考 如何理解查询计划解释。(后续章节)
? gp_workfile_usage_per_query视图的每一行表示一个正在使用溢出文件的 SQL 查询的信息。
? gp_workfile_usage_per_Segment视图的每一行对应一个段数据库,包含了该段上使用的溢出文件占用的磁盘空间总量。
关于这些视图的字段涵义,请参考《Greenplum数据库参考指南》。
参数 gp_workfile_compress_algorithm指定溢出文件的压缩算法:none 或者 zlib。
第三章数据库模式设计
GPDB 是一个基于大规模并行处理(MPP)和无共享架构的分析型数据库。这种数据库的数据模式与高度规范化的事务性SMP数据库显著不同。使用非规范化数据库模式,例如具有大事实表和小维度表的星型或者雪花模式,处理MPP分析型业务时,Greenplum数据库表现优异。
? 数据类型
类型一致性
关联列使用相同的数据类型。如果不同表中的关联列数据类型不同,GPDB 必须动态的进行类型转换以进行比较。考虑到这一点,你可能需要增大数据类型的大小,以便关联操作更高效。 类型最小化
建议选择最高效的类型存储数据,这可以提高数据库的有效容量及查询执行性能。 建议使用 TEXT 或者 VARCHAR 而不是CHAR。不同的字符类型间没有明显的性能差别,但是 TEXT 或者 VARCHAR 可以降低空间使用量。
建议使用满足需求的最小数值类型。如果 INT 或 SAMLLINT 够用,那么选择 BIGINT 会浪费空间。
? 存储模型
在 Greenplum 数据库中,创建表时可以选择不同的存储类型。需要清楚什么时候该使用堆存储、什么时候使用追加优化 …… 此处隐藏:2326字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




