PostgreSQL「一時ファイルのサイズ」


12

新しいデータベースにデータをインポートしました(約600m行のタイムスタンプ、整数、倍精度)。次に、いくつかのインデックスを作成し、いくつかの列を変更しようとしました(スペース不足の問題がありました)。データベースはバキュームされます。

pgAdmin IIIは、「一時ファイルのサイズ」が50G〜+であることを教えてくれます

  1. これらの一時ファイルは何ですか?これらはSQL Serverトランザクションログのようなものですか?
  2. どうすればそれらを取り除くことができますか、データベースは必要以上に大きいようです(データベースの合計サイズは91 GBです)

Windows 2012サーバーでPosgres 9.4.1を使用します。

データベース統計タブのスクリーンショット:

データベース統計タブのスクリーンショット


「一時ファイルのサイズ」列の値は何を表していますか?
Ofiris

回答:


12

pgAdminのドキュメントには何も見つかりませんでしたが、ソースコードはこれらのエントリの背後にあるクエリを示しています(Postgres 9.2+に追加)。

要約すると:

SELECT temp_files AS "Temporary files"
     , temp_bytes AS "Size of temporary files"
FROM   pg_stat_database db;

また、Postgresマニュアルには次の詳細がありpg_stat_databaseます。

tmp_files bigint このデータベースのクエリによって作成された一時ファイルの数。一時ファイルが作成された理由(ソートやハッシュなど)に関係なく、log_temp_files設定に関係なく、すべての一時ファイルがカウントされます。

temp_bytes bigint このデータベースのクエリによって一時ファイルに書き込まれたデータの合計量。一時ファイルが作成された理由とlog_temp_filesの設定に関係なく、すべての一時ファイルがカウントされます。

これらの値がやることに注意してくださいませんデータベースのサイズに寄与ください。ただし、設定work_memが低すぎる可能性があるため、多くのソート操作がディスクに流出することが示されています(RAMに比べて非常に遅い)。

関連:

データベースのサイズを実際に圧縮するには:

サイズを測定するには:

余談:WAL(先書きログ) SQL ServerのトランザクションログのPostgresでは、は同等です。SOに関するこの関連する回答の説明:


10

による:

http://www.postgresql.org/message-id/BLU0-SMTP179B92C5102247CD961A4B3CF2A0@phx.gbl

一時カウンター(使用されているファイルとスペース)には、おそらくクラスターの作成以降に使用されたすべての一時ファイルの合計が表示されます。一時ファイルで使用される現在のスペースは反映されません。

たとえば、私のシステムでは、ほぼ700GBの一時ファイルが使用されていますが、/ var / lib / pgsql / 9.3 / data / base / pgsql_tmpの一時ファイルが占める実際のスペースは現在53MBのみです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.