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 に答える