3

合計で約74Gのテーブルスペースを持つPostgres8.3インスタンスがあります。これで結構です。

しかし、postgresにデータベースの大きさを尋ねると、(予期しない)大きな答えが得られます:595GB。

これは非常に奇妙に思えます。システムのディスクI/Oテストは「通常」の範囲ですが、クエリは以前よりも遅くなります。

これはデータベースの破損ですか?または、この奇妙さを「修正」する方法はありますか?

[編集]OSでテーブルスペースのサイズを確認します。

/usr/local/pgsql/data/tblspaces/du -c -h
74G total 

すべてのテーブルスペースがあります

私はこのようにデータベースのサイズをチェックします:

select pg_size_pretty(pg_database_size('database')) 

[編集2]

/ usr / local / pgsql/dir全体もチェックしました。76Gです

そして、私はこのクエリを実行しました:

select
  tablename
, pg_relation_size(tablename)
, pg_size_pretty(pg_relation_size(tablename) ) as relsize
, pg_size_pretty(pg_total_relation_size(tablename) ) as disksize
, pg_total_relation_size(tablename)
from pg_tables where schemaname <> 'information_schema'
order by 2 desc

'normal'を返したものは関係し、ディスクサイズを超えたものはありません。

4

4 に答える 4

2

破損の問題であることが判明しました。バックアップを完全に復元すると、問題が修正されました

于 2013-01-17T12:07:24.273 に答える
1

表領域のサイズは、以下を使用して確認できます。

SELECT pg_size_pretty(pg_tablespace_size('name of tablespace'));

データベースは、すべてのオブジェクト(テーブル、インデックスなど)を特定のテーブルスペースだけでなく、別の(デフォルト?)テーブルスペースにも格納していないようです。pg_classとpg_tablespaceを確認してください。次のようになります。

SELECT 
    *
FROM pg_class 
    JOIN pg_tablespace ON reltablespace = pg_tablespace.oid
WHERE
    spcname <> 'name of tablespace';
于 2011-09-14T10:14:39.683 に答える
0

最近DBを掃除機で掃除しましたか?これは、特に大きなテーブルで解約率が高い場合に、劇的な影響を与える可能性があります。

また、pg_dumpの結果はどのくらいですか?

于 2011-09-15T03:36:43.167 に答える
0

それはとても奇妙に聞こえます!データベースサイズとテーブルスペースサイズをどのように確認しましたか?データベースが別のテーブルスペースにある可能性があります。

--データベースサイズを取得するにはmydb=>select pg_size_pretty(pg_database_size('mydb'));

pg_size_pretty

214 MB(1行)

--すべてのテーブルスペースがデータベースに接続していることを示し、次のcommond\dbと入力します

于 2011-09-14T08:36:57.910 に答える