Greenplum 数据库最佳实践(10)
使用操作系统工具监控
下面的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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]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,深
- 弟子规全文带拼音




