合 GreenPlum中的gp_toolkit管理模式
Tags: GreenPlumgp_toolkit管理模式
- 简介
- 检查需要例行维护的表(表膨胀相关查询)
- gp_bloat_diag
- gp_stats_missing
- 检查锁
- gp_locks_on_relation
- gp_locks_on_resqueue
- 检查追加优化表
- __gp_aovisimap_compaction_info(oid)
- __gp_aoseg_name(‘table_name’)
- __gp_aoseg_history(oid)
- __gp_aocsseg(oid)
- __gp_aocsseg_history(oid)
- __gp_aovisimap(oid)
- __gp_aovisimap_hidden_info(oid)
- __gp_aovisimap_entry(oid)
- 查看Greenplum数据库服务器日志文件
- gp_log_command_timings
- gp_log_database
- gp_log_master_concise
- gp_log_system
- 检查服务器配置文件
- gp_param_setting(‘parameter_name’)
- 示例:
- gp_param_settings_seg_value_diffs
- 检查失败的segments
- gp_pgdatabase_invalid
- 检查资源组活动和状态(资源队列)
- gp_resgroup_config
- gp_resgroup_status
- gp_resgroup_status_per_host
- gp_resgroup_status_per_segment
- 检查资源队列活动和状态
- gp_resq_activity
- gp_resq_activity_by_queue
- gp_resq_priority_statement
- gp_resq_role
- gp_resqueue_status
- 检查查询磁盘溢出空间使用情况(用户使用的工作空间大小信息)
- gp_workfile_entries
- gp_workfile_usage_per_query
- gp_workfile_usage_per_segment
- 查看用户和组(角色)
- gp_roles_assigned
- 检查数据库对象大小和磁盘空间(查看磁盘上(database,schema,table,indexs,view)等的占用大小的相关信息)
- gp_size_of_all_table_indexes
- gp_size_of_database
- gp_size_of_index
- gp_size_of_partition_and_indexes_disk
- gp_size_of_schema_disk
- gp_size_of_table_and_indexes_disk
- gp_size_of_table_and_indexes_licensing
- gp_size_of_table_disk
- gp_size_of_table_uncompressed
- gp_disk_free
- 检查数据分布不均(表倾斜的相关信息)
- gp_skew_coefficients
- gp_skew_idle_fractions
- 查看用户创建的信息(数据库,schema,表,索引,函数,视图)等信息
- 系统中维护的ID信息
- 系统常用的查询信息
- 系统中常用查询的函数
- 参考
简介
Greenplum数据库提供了一个名为gp_toolkit的管理模式,可用于查询系统catalog,日志文件和操作环境中的系统状态信息。 gp_toolkit模式包含许多视图,您可以使用SQL命令访问这些视图。 尽管某些对象可能需要超级用户权限,但所有数据库用户都可以访问gp_toolkit模式。 为了方便起见,您可能需要将gp_toolkit模式添加到模式搜索路径。 例如:
1 | => ALTER ROLE myrole SET search_path TO myschema,gp_toolkit; |
本文档介绍了gp_toolkit中最有用的视图。 您可能会注意到gp_toolkit模式中的其他对象(视图,函数和外部表)在本文档中未描述(这些是本节中描述的视图的支持对象)。
Warning: 不要在gp_toolkit模式中更改数据库对象。 不要在模式中创建数据库对象。 对模式对象的更改可能会影响模式对象返回的管理信息的准确性。 备份数据库,然后使用gpbackup和gprestore实用程序还原时, 在gp_toolkit模式中所做的任何更改都将丢失。
检查需要例行维护的表(表膨胀相关查询)
以下视图可以帮助您识别需要日常维护的表 (VACUUM和/或ANALYZE)。
VACUUM或VACUUM FULL命令可回收已删除或过时的行所占用的磁盘空间。 由于Greenplum数据库中使用了MVCC事务并发模型,即使任何新事务都不可见,被删除或更新的数据行仍占据磁盘上的物理空间。 过期的行会增加磁盘上的表大小,并最终减慢表的扫描速度。
ANALYZE命令收集查询优化器所需的列级统计信息。 Greenplum数据库使用依赖数据库统计信息的基于成本的查询优化器。 准确的统计信息使查询优化器可以更好地估计选择性和查询操作检索到的行数,从而选择最有效的查询计划。
1 2 3 4 5 | -- 该视图显示了那些膨胀的(在磁盘上实际的页数超过了根据表统计信息得到预期的页数)正规的堆存储的表。 select * from gp_toolkit.gp_bloat_diag; -- 所有对象的膨胀明细 select * from gp_toolkit.gp_bloat_expected_pages; |
gp_bloat_diag
此视图显示膨胀的常规堆存储表(给定表统计信息,磁盘上的实际页面数超过了预期的页面数)。 膨胀的表需要VACUUM或VACUUM FULL,才能回收已删除或过时的行所占用的磁盘空间。 所有用户都可以访问该视图,但是非超级用户将只能看到他们有权访问的表。
Note: 有关返回追加优化表信息的诊断函数,请参阅检查追加优化表。
列 | 描述 |
---|---|
bdirelid | 表OID。 |
bdinspname | 模式名称。 |
bdirelname | 表名。 |
bdirelpages | 磁盘上实际页的数量。 |
bdiexppages | 给定表数据的预期页数。 |
bdidiag | 膨胀诊断消息。 |
gp_stats_missing
该视图显示的表没有统计信息,因此可能需要对该表运行ANALYZE。
列 | 描述 |
---|---|
smischema | 模式名称。 |
smitable | 表名。 |
smisize | 该表是否有统计信息? 如果该表没有在系统catalog中记录行数和行大小统计信息,则为False,这可能表明该表需要进行分析。 如果表不包含任何行,这也将为false。 例如,分区表的父表始终为空,并且始终返回false。 |
smicols | 表中的列数。 |
smirecs | 表中的行数。 |
1 | select * from gp_toolkit.gp_stats_missing; |
检查锁
当事务访问关系(例如表)时,它获取一个锁。 根据获取的锁的类型,后续事务可能必须等待才能访问相同的关系。 有关锁类型的更多信息,请参阅Greenplum数据库管理员指南中的“管理数据”。 Greenplum数据库资源队列(用于资源管理)还使用锁来控制查询进入系统的权限。
gplocks*系列视图可以帮助诊断由于锁定而正在等待访问对象的查询和会话。
1 2 3 4 5 | -- 该视图显示了当前所有表上持有锁,以及查询关联的锁的相关联的会话信息。 select * from gp_toolkit.gp_locks_on_relation; -- 该视图显示当前被一个资源队列持有的所有的锁,以及查询关联的锁的相关联的会话信息。 select * from gp_toolkit.gp_locks_on_resqueue; |
gp_locks_on_relation
此视图显示当前在某个关系上持有的所有锁,以及有关与该锁关联的查询的关联会话信息。 有关锁类型的更多信息,请参阅Greenplum数据库管理员指南中的“管理数据”。 所有用户都可以访问此视图,但是非超级用户将只能看到他们有权访问的关系的锁。
列 | 描述 |
---|---|
lorlocktype | 可锁定对象的类型:relation, extend, page, tuple, transactionid, object, userlock, resource queue, 或 advisory |
lordatabase | 对象所在的数据库的对象ID,如果该对象是共享对象,则为零。 |
lorrelname | 关系的名称。 |
lorrelation | 关系的OID。 |
lortransaction | 受锁影响的事务ID。 |
lorpid | 持有或正在等待此锁定的服务器进程的进程ID。 如果锁由准备好的事务持有,则为NULL。 |
lormode | 此进程持有或需要的锁定模式的名称。 |
lorgranted | 显示是授予锁(true)还是不授予锁(false)。 |
lorcurrentquery | 会话中的当前查询。 |
gp_locks_on_resqueue
Note: 仅当基于资源队列的资源管理处于活动状态时,gp_locks_on_resqueue视图才有效。
该视图显示了资源队列中当前持有的所有锁,以及与该锁关联的查询的关联会话信息。 所有用户都可以访问此视图,但是非超级用户将只能看到与其自己的会话相关联的锁。
列 | 描述 |
---|---|
lorusename | 执行会话的用户名。 |
lorrsqname | 资源队列名称。 |
lorlocktype | 可锁定对象的类型:资源队列 |
lorobjid | 锁定事务的ID。 |
lortransaction | 受锁影响的事务的ID。 |
lorpid | 受锁影响的事务的进程ID。 |
lormode | 此进程持有或需要的锁定模式的名称。 |
lorgranted | 显示是授予锁(true)还是不授予锁(false)。 |
lorwaiting | 显示会话是否正在等待。 |
检查追加优化表
gp_toolkit模式包含一组诊断功能,可用于调查追加优化表的状态。
创建追加优化表(或面向列的追加优化表)时,将隐式创建另一个表,其中包含有关该表当前状态的元数据。 元数据包括诸如表的每个segment中的记录数之类的信息。
追加优化表可能包含不可见的行,这些行已被更新或删除, 但是保留在存储中,直到使用VACUUM压缩表为止。 使用辅助可见性映射表或visimap跟踪隐藏的行。
通过以下函数,您可以访问针对追加优化和面向列的表的元数据,并查看不可见的行。 其中一些函数具有两个版本:一个采用表的oid,而另一个采用表的名称。 后一种版本在函数名称后附加了“ _name”。
__gp_aovisimap_compaction_info(oid)
此函数显示追加优化表的压缩信息。 该信息适用于Greenplum数据库segment中存储表数据的磁盘上数据文件。 您可以使用该信息来确定将通过VACUUM操作对追加优化表进行压缩的数据文件。
Note: 在VACUUM操作从数据文件中删除该行之前,已删除或已更新的数据行将占据磁盘上的物理空间,即使它们已被新事务隐藏。 配置参数gp_appendonly_compaction控制VACUUM命令的功能。
下表描述了__gp_aovisimap_compaction_info函数输出表。
列 | 描述 |
---|---|
content | Greenplum数据库segment ID。 |
datafile | segment上数据文件的ID。 |
compaction_possible | 该值为t或f。 值t表示执行VACUUM操作时压缩数据文件中的数据。服务器配置参数gp_appendonly_compaction_threshold会影响此值。 |
hidden_tupcount | 在数据文件中,隐藏(删除或更新)的行数。 |
total_tupcount | 在数据文件中,总行数。 |
percent_hidden | 在数据文件中,隐藏(已删除或更新)行与总行的比率(百分比)。 |
__gp_aoseg_name(‘table_name’)
此函数返回追加优化表的磁盘段文件中包含的元数据信息。
列 | 描述 |
---|---|
segno | 文件段号。 |
eof | 该文件段的文件有效结尾。 |
tupcount | 段中的元组总数,包括不可见的元组。 |
varblockcount | 文件段中的varblocks总数。 |
eof_uncompressed | 文件末尾(如果文件段未压缩)。 |
modcount | 数据修改操作的数量。 |
state | 文件段的状态。 指示段是活动的还是压缩后可以删除的。 |
__gp_aoseg_history(oid)
此函数返回追加优化表的磁盘段文件中包含的元数据信息。 它显示aoseg元信息的所有不同版本(堆元组)。 数据很复杂,但是对系统有深入了解的用户可能会发现它对于调试很有用。
输入参数是追加优化表的oid。
调用__gp_aoseg_history_name(’table_name’)可获得与表名参数相同的结果。
列 | 描述 |
---|---|
gp_tid | 元组的id。 |
gp_xmin | 最早事务的id。 |
gp_xmin_status | gp_xmin事务的状态。 |
gp_xmin_commit | gpxmin事务的提交分布式id。 |
gp_xmax | 最晚的事务id。 |
gp_xmax_status | 最晚的事务的状态。 |
gp_xmax_commit | gp_xmax事务的提交分布式id。 |
gp_command_id | 查询命令的id。 |
gp_infomask | 包含状态信息的位图。 |
gp_update_tid | 更新的元组的ID(如果该行已更新)。 |
gp_visibility | 元组可见性状态。 |
segno | 段文件中的段号。 |
tupcount | 元组数量,包括隐藏元组。 |
eof | 段的文件的有效结尾。 |
eof_uncompressed | 该段的文件末尾,如果数据未压缩。 |
modcount | 数据修改计数。 |
state | 段的状态。 |
__gp_aocsseg(oid)
此函数返回包含在面向列的追加优化表的磁盘段文件中的元数据信息,不包括不可见的行。 每行描述表中一列的段。