再读greenplum的admin guide文档

本文深入探讨了Greenplum的管理,包括master的角色、工具包的使用、VACUUM和ANALYZE操作、系统统计信息、segment镜像、历史优化器、增量备份和系统检查等方面。强调了均匀分布数据和工作负载以获得最佳性能的重要性,并提供了维护和调优的建议。
摘要由CSDN通过智能技术生成

master

The master is where the global system catalog resides. The global system catalog is the set of system tables that contain metadata about the Greenplum Database system itself.
master负责的内容包括:
* authenticates client connections
* processes incoming SQL commands
* distributes workloads among segments
* coordinates the results returned byeach segment
* presents the final results to the client program.

The key to obtaining the best performance from Greenplum Database is to distribute data and workloads evenly across a large number of equally capable segments so that all segments begin working on a task simultaneously and complete their work at the same time.

工具包

$GPHOME/bin

vacuum

每20亿事务执行后,需要执行一次数据库级别的vaccum动作,不然会导致XID wraparound
xid_warn_limitxid_stop_limit是两个可设定的值,越界后,会导致如下两种情况:

WARNING: database database_name must be vacuumed within number_of_transactions transactions
FATAL: database is not accepting commands to avoid wraparound data loss in database "database_name"

vaccum,建议每天执行一次,可以避免表空间增长过快,尤其是在进行过大量的update和delete后操作,效果更好。它的实现是根据table's free space map来进行的。
vaccum full,会重写表数据,会做的更彻底。这个操作执行的时候,一定要保证磁盘空间充足。执行的时候会锁住表,所以此命令最好在运维修复环境的时候执行。

analyze

主要用来收集元数据信息,statistics
statistics主要是optimizer在做查询计划的时候用,保存在system catalog里。
有三个办法可以触发收集信息:
1. 数据库内执行analyze
2. linux系统命令行,执行analyzedb
3. 配置gp,在收到DML操作的时候,自动进行收集

analyze的目的是收集元数据信息,进而使得optimizer做查询计划时候更合理,进而导致更快的查询速度。但是如果查询规划不符合预期效果,可以查实修改gp_analyze_relative_error,默认是0.25,可以调整的更低一些,这样收集的元数据信息会更准确,但是会带来更多的磁盘消耗和analyze执行所需的时间。

analyze还有另一个可以调整的参数,default_statistics_target,但是作用还没看明白。

analyze可以基于一个表内的几列来做。

system statistics

在执行vaccumanalyze的时候会进行收集信息的update

pg_class

收集了表信息:rows和pages
表pg_class
列:

  • reltuples
  • relpages

当reltuples和select count(*)的结果差异较大的时候,就应该执行analyze或者vaccum了
当reindex命令执行后,reltuples和relpages会被置零。

pg_statistic & pg_stats

pg_statistic保存了上一次analyze执行后各表的statistics信息。

查看无statistics信息的表

select * from gp_toolkit.gp_stats_missing;

创建了一个表,插入了一条数据,做过analyze后,missing表里还有这个表的信息,不知道为什么。

segment mirror

segment有两个角色primay和mirror,mirror就是备份的计算单元。
mirror的分布有两种,一个是group mirroring,一个是spread mirroring。第一种保证mirror不和primary分布在同一台计算节点上,其他的就没有了。第二种相当于自定义的,开源社区讨论有说用4个计算节点做一个小圈,其实就是数学上的概念,尽量均衡分布segment,可以容错更多的物理服务器宕机场景。

segment的分布有两种方案:

  • group mirroring
  • spread mirroring

group mirroring,是默认方案,spread mirroring,是自定义方案。
spread mirroring可以让用户自行配置mirror segment放置的位置。基于数学计算,可以用4个物理服务器组成一个小圈,能够达到这样一个效果:如果1个物理机宕机,这个物理机上的segment会被均衡地在其他三台机器上激活。而group mirroring方案,很有可能会导致segment负责不均衡。

legacy optimizer

legacy optimizer有如下控制参数,决定一些开关:

enable_bitmapscan
enable_groupagg
enable_hashagg
enable_hashjoin
enable_indexscan
enable_mergejoin
enable_nestloop
enable_seqscan
enable_sort
enable_tidscan
gp_enable_adaptive_nestloop
gp_enable_agg_distinct
gp_enable_agg_distinct_pruning
gp_enable_direct_dispatch
gp_enable_fallback_plan
gp_enable_fast_sri
gp_enable_groupext_distinct_ gather
gp_enable_groupext_distinct_ pruning
gp_enable_multiphase_agg
gp_enable_predicate_ propagation
gp_enable_preunique
gp_enable_sequential_window_ plans
gp_enable_sort_distinct
gp_enable_sort_limit

下面这些参数,是legacy optimizer的调优参数,但是参数相互之间有关联,所以官方不建议随意调整:

cpu_index_tuple_cost
cpu_operator_cost
cpu_tuple_cost
cursor_tuple_fraction
effective_cache_size
gp_motion_cost_per_row
gp_segments_for_planner
random_page_cost
seq_page_cost

调优可以从如下几个方面进行:
1. statistics收集(analyze相关参数调整)
2. sort
3. aggregate
4. join

增量备份

greenplum支持增量备份,备份原理是:第一次进行一次完整备份,后续仅仅对表内,有数据修改的分区数据,进行备份。
这种备份方式要求:第一次完整备份,以及后续所有的增量备份都存在,才能进行数据恢复。
所以,对分区规划合理,且数据修改量不大的场景下,增量备份很合适。

检查系统

查看状态

gpstate
gpstate -s
gpstate -m
gpstate -c
gpstate -f

磁盘使用

磁盘水位设定为70%比较合适&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值