1

我正在使用 Cognos 报告和 Greenplum 数据库。

我的报告运行时间过长。所以我查看了绿梅日志,发现查询 pg_catalog 的时间有一半。在目录中,我不是在查看 pg_catalog 而是在其他表上,所以我不明白为什么 cognos 决定查看 pg_catalog 表。

当我运行 cognos 报告时,我可以从 greenplum 日志中看到,对于某些查询,cognos 在运行查询之前在 pg_catalog 上运行 select。

为什么是这样?

4

1 回答 1

0

pg_catalog 包含有关表、列和其他数据库对象的元数据。我认为您的问题是目录膨胀。基本上,如果您需要等待几秒钟来列出表(在 psql 中使用 \d),那么您应该清理您的目录。

在 GP 管理员指南中查看“第 19 章:日常系统维护任务”-“常规系统目录维护”。

Greenplum 建议您定期在系统目录上运行 VACUUM 以清除已删除对象占用的空间。如果大量 DROP 语句是常规数据库操作的一部分,那么每天在非高峰时间使用 VACUUM 运行系统目录维护过程是安全且合适的。这可以在系统运行且可用时完成。以下示例脚本执行 Greenplum 数据库系统目录的 VACUUM:

#!/bin/bash
DBNAME="<database_name>"
VCOMMAND="VACUUM ANALYZE"
psql -tc "select '$VCOMMAND' || ' pg_catalog.' || relname || ';' from pg_class a,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' and a.relkind='r'" $DBNAME | psql -a $DBNAME
于 2012-11-16T14:27:33.997 回答