Greenplum与其他所有关系型数据库一样,拥有一套管理数据库内部对象及关联关系的元数据表,我们称之为Greenplum系统表。Greenplum的产品内核是基于postgresql数据库基础上开发完成的,因此,Greenplum系统表很多继承于postgresql数据库。
Greenplum的系统表大致可分为这几类:
1.数据库内部对象的元数据,如:pg_database、pg_namespace、pg_class、pg_attribute、pg_type、pg_exttable等。
这类系统表既涵盖了全局的对象定义,也涵盖了每个数据库内的各种对象定义。这类系统表的元数据不是分布式的存储,而是每一个数据库实例(不论是master实例还是segment实例)中都各有一份完整的元数据。但也有例外,如:gp_distribution_policy(分布键定义)表则只在master上才有元数据。
对于这类系统表,各个实例之间元数据保持一致十分重要。
2. 维护Greenplum集群状态的元数据,如:gp_segment_configuration、gp_configuration_history、pg_stat_replication等。
这类系统表主要由master实例负责维护,就如segment实例状态管理的两张表gp_segment_configuration和gp_configuration_history的数据是由master的专用进程fts负责维护的。
3. Persistent table,如:gp_persistent_database_node、gp_persistent_filespace_node、gp_persistent_relation_node、gp_persistent_tablespace_node。
这类系统表同样是存在于每一个数据库实例中。在每个实例内,persistenttable与pg_class/pg_relation_node/pg_database等系统表有着严格的主外键关系。这类系统表也是primary实例与mirror实例之间实现同步的重要参考数据。
<

本文介绍了Greenplum的系统表分类及其在数据库中的作用,包括元数据、集群状态和Persistent Table。当系统表出现问题时,可能导致各种故障。文章提供了检查工具gpcheckcat的使用方法以及处理系统表问题的技巧,如临时schema、表对象元数据不一致和Persistent Table问题的修复策略。强调了在修复过程中应注意避免直接修改系统表数据,而是通过数据库操作解决,并在问题解决后恢复默认配置。
最低0.47元/天 解锁文章
3936

被折叠的 条评论
为什么被折叠?



