合 Greenplum的日常监控
- 简介
- 监控数据库活动和性能
- 监控系统状态
- 检查系统状态
- 查看Master和Segment的状态及配置
- 查看镜像配置和状态
- 检查磁盘空间使用
- 检查分布式数据库和表的大小
- 查看一个数据库的磁盘空间使用情况
- 查看一个表的磁盘空间使用情况
- 查看索引的磁盘空间使用情况
- 检查数据分布倾斜
- 查看一个表的分布键
- 查看数据分布
- 检查查询过程倾斜
- 避免极度倾斜警告
- 查看数据库对象的元数据信息
- 查看最后一个执行的操作
- 查看一个对象的定义
- 查看会话内存使用信息
- 创建session_level_memory_consumption视图
- session_level_memory_consumption视图
- 查看查询工作文件使用信息
- 查看数据库服务器日志文件
- 日志文件格式
- 搜索Greenplum服务器日志文件
- 监控Greenplum数据库日志文件
- 使用gp_toolkit
- 用操作系统工具监控
- 最佳实践
- 附加信息
- 用ANALYZE更新统计信息
- 有选择地生成统计信息
- 提升统计信息质量
- 何时运行ANALYZE
- 配置统计信息自动收集
- 管理数据库膨胀
- 检测膨胀
- 从数据库表移除膨胀
- 从索引移除膨胀
- 从系统目录移除膨胀
- 从追加优化表移除膨胀
- Recommended Monitoring and Maintenance Tasks
- Database State Monitoring Activities
- Database Alert Log Monitoring
- Hardware and Operating System Monitoring
- Catalog Monitoring
- Data Maintenance
- Database Maintenance
- Patching and Upgrading
- 参考
简介
可以用系统中包含的各种工具以及附加组件来监控一个Greenplum数据库系统。
观察Greenplum数据库系统日常的性能有助于管理员理解系统的行为、计划工作流以及故障排查问题。 本章讨论用于监控数据库性能和活动的工具。
另外,记得回顾Recommended Monitoring and Maintenance Tasks中编写脚本 监控活动来快速检测系统中问题的有关内容。
Greenplum数据库提供了一些对监控系统非常有用的工具。
gp_toolkit模式包含多个可以用SQL命令访问的视图,通过它们可以查询系统目录、日志 文件以及操作环境来获得系统状态信息。
gp_stats_missing视图展示没有统计信息且要求运行ANALYZE的表。
监控数据库活动和性能
Greenplum数据库包含一个可选的系统监控和管理数据库gpperfmon,管理员可以 选择启用它。gpperfmon_install命令行工具创建gpperfmon 数据库并启用数据收集代理来存储查询和系统矩阵信息到该数据库。管理员可以查询gpperfmon 数据库中的矩阵信息。更多gpperfmon的信息,请见Greenplum Database Reference Guide。
监控系统状态
作为一个Greenplum数据库管理员,必须监控系统的问题事件,例如一个Segment宕机或者一台Segment主机磁盘 空间耗尽。下面的主题描述如何监控一个Greenplum数据库系统的健康状况以及检查一个Greenplum数据库系统的 特定状态信息。
检查系统状态
一个Greenplum数据库系统由横跨多台机器的多个PostgreSQL实例(Master和Segment)构成。要监控一个 Greenplum数据库系统,需要了解整个系统的信息以及个体实例的状态信息。gpstate 工具提供有关一个Greenplum数据库系统的状态信息。
查看Master和Segment的状态及配置
默认的gpstate行为是检查Segment实例并且显示可用和失效Segment的一个简短状态。 例如,要快速查看Greenplum数据库系统的状态:
1 | $ gpstate |
要查看Greenplum数据库阵列配置更详细的信息,使用带有-s选项的gpstate:
1 | $ gpstate -s |
查看镜像配置和状态
如果在使用镜像作为数据冗余,用户可能想要看看系统中的镜像Segment实例列表、它们当前的同步状态以及 镜像和主Segment之间的映射。例如,要查看一个系统中的镜像Segment和它们的状态:5
1 | $ gpstate -m |
要查看主Segment到镜像Segment的映射:
1 | $ gpstate -c |
要查看后备Master镜像的状态:
1 | $ gpstate -f |
检查磁盘空间使用
一个数据库管理员最重要的监控任务是确保Master和Segment数据目录所在的文件系统的使用率不会超过 70%的。完全占满的数据磁盘不会导致数据损坏,但是可能会妨碍数据库的正常操作。如果磁盘占用得太满, 可能会导致数据库服务器关闭。
可以使用gp_toolkit管理模式中的gp_disk_free外部表 来检查Segment主机文件系统中的剩余空闲空间(以KB为计量单位)。例如:
1 | =# SELECT * FROM gp_toolkit.gp_disk_free ORDER BY dfsegment; |
检查分布式数据库和表的大小
gp_toolkit管理模式包含几个可以用来判断Greenplum数据库的分布式数据库、 模式、表或索引磁盘空间使用的视图。
用于检查数据库对象尺寸和磁盘空间的视图列表,请见Greenplum Database Reference Guide.
查看一个数据库的磁盘空间使用情况
要查看一个数据库的总大小(以字节计),使用gp_toolkit管理模式中的gp_size_of_database 视图。例如:
1 | => SELECT * FROM gp_toolkit.gp_size_of_database ORDER BY sodddatname; |
查看一个表的磁盘空间使用情况
gp_toolkit管理模式包含几个检查表大小的视图。表大小视图根据对象ID (而不是名称)列出表。要根据一个表的名称检查其尺寸,必须在pg_class表中查找关系名称 (relname)。例如:
1 2 3 4 | => SELECT relname AS name, sotdsize AS size, sotdtoastsize AS toast, sotdadditionalsize AS other FROM gp_toolkit.gp_size_of_table_disk as sotd, pg_class WHERE sotd.sotdoid=pg_class.oid ORDER BY relname; |
可用的表大小视图的列表请见Greenplum Database Reference Guide.
查看索引的磁盘空间使用情况
gp_toolkit管理模式包含几个用于检查索引大小的视图。要查看一个表上所有索引的总大小,使用 gp_size_of_all_table_indexes视图。要查看一个特定索引的大小,使用gp_size_of_index视图。 该索引大小视图根据对象ID(而不是名称)列出表和索引。要根据一个索引的名称查看其尺寸,必须在pg_class 表中查找关系名称(relname)。例如:
1 2 3 4 | => SELECT soisize, relname as indexname FROM pg_class, gp_toolkit.gp_size_of_index WHERE pg_class.oid=gp_size_of_index.soioid AND pg_class.relkind='i'; |
检查数据分布倾斜
Greenplum数据库中所有的表都是分布式的,意味着它们的数据被按规则划分到系统中的所有Segment上。 不均匀分布的数据可能会削弱查询处理性能。一个表的分布策略在表创建时被确定。有关选择表分布策略的信息, 请见下列主题:
gp_toolkit管理模式还包含一些用于检查表上数据分布倾斜的视图。有关如何检查非均匀数据分布的信息, 请见Greenplum Database Reference Guide.
查看一个表的分布键
要查看一个表中被用作数据分布键的列,可以使用psql中的\d+ 元命令来检查表的定义。例如:
1 2 3 4 5 6 7 8 9 | =# \d+ sales Table "retail.sales" Column | Type | Modifiers | Description -------------+--------------+-----------+------------- sale_id | integer | | amt | float | | date | date | | Has OIDs: no Distributed by: (sale_id) |
当我们创建复制表时,Greenplum数据库会在每个Segment上都存储一份完整的表数据。复制表没有分布键。 \d+元命令会展示分布表的分布键,复制表展示状态为Distributed Replicated。
查看数据分布
要查看一个表中行的数据分布(每个Segment上的行数),可以运行一个这样的查询: