2012-07-24 47 views
1

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

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

当我运行Cognos报告,我可以从Greenplum的日志中看到,一个对于一些查询,Cognos公司在pg_catalog运行选择运行查询之前。

这是为什么?

+0

我不熟悉的Greenplum但pg_catalog表听起来像包含元数据的系统目录。根据发出的查询类型的不同,Cognos有时会向数据库发出元数据请求,以帮助决定如何处理查询。当您创建报告时,是基于Framework Manager模型/包,还是在报告中使用自定义SQL? – chsh 2012-07-31 14:13:54

回答

0

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

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

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

#!/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