13

sql-8.2/base/テーブルがどれくらいのスペースを占めるかを確認すると、番号で名前が付けられたファイルがたくさんあります。特定のテーブルとそのテーブルのインデックスを格納する特定のファイルを見つけるにはどうすればよいですか?

たとえば、ファイルを日付順 (新しい順) に並べましたが、その特定の期間にいくつかあります。

-rw-------  1 postgres sql  1.0G Dec  4 13:41 15426233
-rw-------  1 postgres sql  149M Dec  4 13:41 15426233.4
-rw-------  1 postgres sql  1.0G Dec  4 13:41 15426233.3
drwx------  3 postgres sql   75K Dec  4 13:40 .
-rw-------  1 postgres sql  1.0G Dec  4 13:34 15426233.2
-rw-------  1 postgres sql  1.0G Dec  4 13:28 15426233.1
-rw-------  1 postgres sql  3.6M Dec  4 11:23 1249
-rw-------  1 postgres sql  584K Dec  4 11:23 2659
-rw-------  1 postgres sql  672K Dec  4 11:23 2663
-rw-------  1 postgres sql  136K Dec  4 11:23 2662
-rw-------  1 postgres sql  848K Dec  4 11:23 2608
-rw-------  1 postgres sql  2.6M Dec  4 11:23 2658
-rw-------  1 postgres sql  600K Dec  4 11:23 2674
-rw-------  1 postgres sql   56K Dec  4 11:23 2679
-rw-------  1 postgres sql  632K Dec  4 11:23 2673
-rw-------  1 postgres sql   72K Dec  4 11:23 2678
-rw-------  1 postgres sql  1.8M Dec  4 11:22 2619
-rw-------  1 postgres sql  112K Dec  4 11:21 2696
-rw-------  1 postgres sql 1007M Dec  4 11:21 15426228.5
-rw-------  1 postgres sql  1.0G Dec  4 11:19 15426228.4
-rw-------  1 postgres sql  1.0G Dec  4 11:19 15426228.3
-rw-------  1 postgres sql  1.0G Dec  4 11:18 15426228.2
-rw-------  1 postgres sql  1.0G Dec  4 11:17 15426228.1
-rw-------  1 postgres sql  1.0G Dec  4 11:16 15426228
4

3 に答える 3

23

各ディレクトリは、( で作成されたcreate database) データベースを表します。番号はデータベースの oid です。oid とその名前を表示するには、次のステートメントを実行します。

select oid, datname
from pg_database;

各ディレクトリ内の各ファイルはpg_class、oid がディレクトリ内のファイルの番号と一致するエントリに対応します。

次のステートメントを実行すると、oid と、それらが関連するリレーションを確認できます。

select cl.relfilenode, nsp.nspname as schema_name, cl.relname, cl.relkind
from pg_class cl
  join pg_namespace nsp on cl.relnamespace = nsp.oid;

また、マニュアルを確認することもできます

ところで: 本当にまだ 8.2 を実行している場合は、できるだけ早くアップグレードする必要があります。

于 2012-12-04T13:28:51.457 に答える
5
select pg_relation_filepath('OID or name of a table, index, sequence, or toast table');

例えば:

select pg_relation_filepath('flush_history');
Returns base/83780/153211 which you will find in your data directory.

http://www.postgresql.org/docs/current/static/functions-admin.html

于 2012-12-04T13:27:00.873 に答える
4

テーブルが使用するスペースを確認するには:

SELECT pg_size_pretty(pg_total_relation_size('table_name_here'))

インデックスと「トースト」テーブルを含むテーブルのサイズがわかります。詳細はこちら

于 2012-12-04T13:28:21.933 に答える