教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

Greenplum 数据库最佳实践(10)

来源:网络收集 时间:2026-08-30
导读: 使用操作系统工具监控 下面的Linux/Unix 工具可用于评估主机性能: ? iostat 监控段数据库(Segments)的磁盘活动 ? top 显示操作系统进程的动态信息 ? vmstate 显示内存使用情况的统计信息 可以使用 gpssh 在多个主

使用操作系统工具监控

下面的Linux/Unix 工具可用于评估主机性能:

?

iostat 监控段数据库(Segments)的磁盘活动

? top 显示操作系统进程的动态信息

? vmstate 显示内存使用情况的统计信息

可以使用 gpssh 在多个主机上运行这些命令。 最佳实践

? 实现《Greenplum数据库管理员指南》中推荐的监控和维护任务。

? 安装前运行gpcheckperf,此后周期性运行gpcheckperf,并保存每次的结果,以用于比较系统随着时间推移的性能变化。

? 使用一切可用的工具来更好地理解系统在不同负载下的行为。

? 检查任何异常事件并确定原因。

? 通过定期运行解释计划监控系统查询活动,以确保查询处于最佳运行状态。

? 检查查询计划,以确定是否按预期使用了索引和进行了分区裁剪。 额外信息

? 《Greenplum数据库工具指南》中 gpcheckperf

? 《Greenplum数据库管理员指南》中“监控和维护任务建议”

? Sustainable Memory Bandwidth in Current High Performance Computers. John D. McCalpin. Oct 12, 1995.

? 关于netperf,可参考www.netperf.org,需要在每个待测试的主机上安装netperf。参考gpcheckperf指南获的更多信息。

? 使用ANALYZE更新统计信息

良好查询性能的最重要前提是精确的表数据统计信息。使用 ANALYZE 语句更新统计信息后,优化器可以选取最优的查询计划。分析完表数据后,相关统计信息保存在系统表中。如果系统表存储的信息过时了,优化器可能生成低效的计划。 选择性统计

不带参数运行 ANALYZE 会更新数据库中所有表的统计信息。这可能非常耗时,不推荐这样做。当数据发生变化时,建议对变化的表进行 ANALYZE。

对大表执行ANALYZE可能较为耗时。如果对大表的所有列运行 ANALYZE 不可行,则使用 ANALYZE table(column, ...) 仅为某些字段生成统计信息。确保包括关联、WHERE子句、SORT子句、GROUP BY子句、HAVING子句中使用的字段。

对于分区表,可以只ANALYZE发生变化的分区,譬如只分析新加入的分区。注意可以ANALYZE分区表的父表或者最深子表。统计数据和用户数据一样,存储在最深子表中。中间层子表既不保存数据,也不保存统计信息,因而ANALYZE 它们没有效果。可以从系统表 pg_partitions 中找到分区表的名字。

SELECT partitiontablename from pg_partitions WHERE tablename='parent_table; 提高统计数据质量

需要权衡生成统计信息所需时间和统计信息的质量(或者精度)。

为了在合理的时间内完成大表的分析,ANALYZE对表内容随机取样,而不是分析每一行。调整配置参数default_statistics_target 可以改变采样率。其取值范围为1到1000;默认是25。默认 default_statistics_target 影响所有字段。较大的值会增加ANALYZE的时间,然而会提高优化器的估算质量。对于那些数据模式不规则的字段更是如此。可以在主服务器(Master) 的会话中设置该值,但是需要重新加载。

配置参数 gp_analyze_relative_error 会影响为确定字段基数而收集的统计信息的采样率。例如 0.5 表示可以接受 50% 的误差。默认值是 0.25。使用gp_analyze_relative_error

设置表基数估计的可接受的相对误差。如果统计数据不能产生较好的基数估计,则降低相对误差率(接受更少的错误)以采样更多的行。然而不建议该值低于0.1,否则会大大延长ANALYZE的时间。 何时运行ANALYZE

运行 ANALYZE 的时机包括:

?

加载数据后

? CREATE INDEX 操作后

? 影响大量数据的 INSERT、UPDATE和DELETE操作后

ANALYZE 只需对表加读锁,所以可以与其他数据库操作并行执行,但是在数据加载和执行INSERT/UPDATE/DELETE/CREATE INDEX 操作时不要运行 ANALYZE。 自动统计

配置参数gp_autostats_mode和gp_autostats_on_change_threshold确定何时触发自动分析操作。当自动统计数据收集被触发后,planner会自动加入一个 ANALYZE 步骤。 gp_autostats_mode 默认设置是on_no_stats,如果表没有统计数据,则CREATE TABLE AS SELECT, INSERT, COPY操作会触发自动统计数据收集。 如果gp_autostats_mode是on_change,则仅当更新的行数超过

gp_autostats_on_change_threshold 定义的阈值时才触发统计信息收集,其默认值是2147483647。这种模式下,可以触发自动统计数据收集的操作有:CREATE TABLE AS SELECT, UPDATE, DELETE, INSERT 和 COPY。

设置 gp_autostats_mode 为 none 将禁用自动统计信息收集功能。

对分区表,如果从最顶层的父表插入数据不会触发统计信息收集。如果数据直接插入到叶子表(实际存储数据的表),则会触发统计信息收集。 ? 管理数据库臃肿(Bloat)

Greenplum 数据库的堆表使用PostgreSQL的多版本并发控制(MVCC)的存储实现方式。删除和更新的行仅仅是逻辑删除,其实际数据仍然存储在表中,只是不可见。这些删除的行,也称为过期行,由空闲空间映射表(FSM, Free Space Map)记录。VACUUM标记这些过期的行为空闲空间,并可以被后续插入操作重用。

如果某个表的FSM不足以容纳所有过期的行,VACUUM命令无法回收溢出FSM的过期行空间。这些空间只能由VACUUM FULL回收,VACUUM FULL会锁住整个表,逐行拷贝到文件头部,并截断(TRUNCATE)文件。对于大表,这一操作非常耗时。仅仅建议对小表执行这种操作。如果试图杀死VACUUM FULL进程,系统可能会被破坏。 …… 此处隐藏:993字,全部文档内容请下载后查看。喜欢就下载吧 ……

Greenplum 数据库最佳实践(10).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/518721.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)