这一节包含常规维护的最佳实践,它们将确保Greenplum数据库的高可用性以及最优性能。
?
用ANALYZE更新统计信息
在数据库中管理膨胀
监控Greenplum数据库日志文件
监控
Greenplum数据库包括对监控系统非常有用的工具。
gp_toolkit方案包含多个可以用SQL命令访问的视图,通过它们可以查询系统目录、日志文件以及操作环境来获得系统状态信息。
gp_stats_missing视图展示没有统计信息且要求运行ANALYZE的表。
更多gpstate和gpcheckperf的信息请参考Greenplum数据库工具指南。
gpstate
gpstate工具程序显示Greenplum系统的状态,包括哪些Segment宕掉了、Master和Segment的配置信息(hosts、数据目录等)、系统使用的端口以及主Segment与它们对应的镜像Segment之间的映射。
运行gpstate -Q可以得到一个Segment的列表,它们在Master的系统目录中被标记为"down"。
要得到Greenplum系统的详细状态信息,可运行gpstate -s。
gpcheckperf
gpcheckperf工具对一个列表的主机测试基线硬件性能。其结果可以帮助发现硬件问题。它会执行下列检查:
磁盘I/O测试 – 通过使用操作系统命令dd读写一个大型文件来测量I/O性能。它报告以兆字节每秒为单位的读写速率。
内存带宽测试 – 使用STREAM基准测量以兆字节每秒为单位的可持续的内存带宽。
网络性能测试 – 运行gpnetbench网络基准程序(也可以选netperf)来测试网络性能。这种测试可以运行在三种模式中:并行结对测试(-r N)、串行结对测试(-r n)或者全矩阵测试(-r M)。报告的最小、最大、平均和中值传输率将以兆字节每秒为单位。
为了从gpcheckperf获得有效的数字,数据库系统必须被停止。即使系统仍在运行且没有运行查询活动,从gpcheckperf得到的数字可能也不准确。
gpcheckperf要求在涉及性能测试的主机之间有可信的主机设置。它会调用gpssh以及gpscp,因此这些工具必须也位于用户的PATH中。可以个别指定要检查的主机(-h host1 -h host2 ...)或者使用-f hosts_file,其中hosts_file是一个包含要检查的主机列表的文本文件。如果用户有多个子网,为每个子网都创建一个单独的主机文件,这样用户可以单独测试子网。
gpcheckperf默认会运行磁盘I/O测试、内存测试和串行结对网络性能测试。对于磁盘I/O测试,用户必须使用-d选项指定要测试的文件系统。下面的命令在subnet_1_hosts文件中列出的主机上测试磁盘I/O和内存带宽:
-r选项选择要运行的测试:磁盘I/O(d)、内存带宽(s)、网络并行结对(N)、网络串行结对测试(n)、网络全矩阵测试(M)。每次执行只能选择一种网络模式。
用操作系统工具监控
下面的Linux/UNIX工具可以被用来评估主机性能:
iostat允许用户监控Segment主机上的磁盘活动。
top显示操作系统进程的动态视图。
vmstat显示内存使用统计信息。
用户可以使用gpssh在多台主机上运行工具。
最佳实践
实现Greenplum数据库管理员指南中的“推荐的监控和维护任务”。
在安装时运行gpcheckperf,并且在安装之后定期运行它,将其输出保存起来以对比不同时刻的系统性能。
使用所有能支配的工具来理解系统在不同负载下的行为。
检查异常时间以确定原因。
通过定期运行解释计划监控系统上的查询活动,以确保查询以最优的方式运行。
检查计划以确定索引是否被使用以及分区消除是否按照预期发生。