cognos greenplum pg_catalog
Posted
技术标签:
【中文标题】cognos greenplum pg_catalog【英文标题】: 【发布时间】:2012-07-24 15:46:16 【问题描述】:我正在使用 Cognos 报告和 Greenplum 数据库。
我的报告运行时间过长。所以我查看了绿梅日志,发现查询 pg_catalog 的时间有一半。在目录中,我不是在查看 pg_catalog 而是在其他表上,所以我不明白为什么 cognos 决定查看 pg_catalog 表。
当我运行 cognos 报告时,我可以从 greenplum 日志中看到,对于某些查询,cognos 在运行查询之前在 pg_catalog 上运行 select。
这是为什么?
【问题讨论】:
我对 Greenplum 不熟悉,但 pg_catalog 表听起来像是包含元数据的系统目录。根据发出的查询类型,Cognos 有时会向数据库发出元数据请求,以帮助决定如何处理查询。当您制作报告时,它是基于 Framework Manager 模型/包,还是您在报告中使用自定义 SQL? 【参考方案1】:pg_catalog 包含有关表、列和其他数据库对象的元数据。 我认为您的问题是目录膨胀。基本上,如果您需要等待几秒钟来列出表(在 psql 中使用 \d),那么您应该清理您的目录。
查看 GP 管理指南中的“第 19 章:日常系统维护任务”-“常规系统目录维护”。
Greenplum 建议您定期在系统上运行 VACUUM 目录以清除已删除对象占用的空间。如果众多 DROP 语句是常规数据库操作的一部分,它是安全的 并适合运行系统目录维护程序 每天在非高峰时间进行 VACUUM。这可以在系统运行时完成 运行和可用。以下示例脚本执行 VACUUM 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
【讨论】:
以上是关于cognos greenplum pg_catalog的主要内容,如果未能解决你的问题,请参考以下文章