我正在使用Cognos和Greenplum数据库。
我的报告花了太多时间太长时间。所以我看了看青梅原木,发现有一半的时间是用来查询pg_catalog的。在目录中,我看的不是pg_catalog,而是其他表,所以我不明白为什么cognos决定查看pg_catalog表。
当我运行cognos时,我可以从格林梅利日志中看到,a对于某些查询,在运行查询之前,CognosRunSelectonpg_catalog。
为什么会这样呢?
发布于 2012-11-16 14:27:33
pg_catalog包含有关表、列和其他数据库对象的元数据。我想你的问题是目录膨胀。基本上,如果您需要等待几秒钟才能列出表(在psql中使用\d ),那么您应该关闭目录。
检查“第19章:常规系统维护任务”-- GP管理指南中的“常规系统目录维护”。
Greenplum建议您定期在系统目录上运行真空,以清除已删除对象占用的空间。如果许多DROP语句是常规数据库操作的一部分,那么在非高峰时间运行每天真空的系统目录维护过程是安全和合适的。这可以在系统运行和可用时完成。下面的示例脚本执行格林梅利数据库系统目录的真空操作:
#!/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 $DBNAMEhttps://stackoverflow.com/questions/11634564
复制相似问题