PostgreSQL «размер временных файлов»

12

Я импортировал данные в новую базу данных (около 600 м строк timestamp, integer, double). Затем я создал несколько индексов и попытался изменить некоторые столбцы (из-за проблем с пространством) база данных была очищена.

Теперь pgAdmin III сообщает мне, что « Размер временных файлов » составляет 50G ~ +.

  1. Что это за временные файлы? это как журнал транзакций SQL Server?
  2. Как можно от них избавиться, кажется, база данных намного больше, чем должна (общий размер базы данных составляет 91 ГБ)

Использование Posgres 9.4.1 на сервере Windows 2012.

Скриншот вкладки статистики базы данных:

Скриншот вкладки статистики базы данных

Ofiris
источник
Что представляет собой значение столбца «размер временных файлов»?
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могут быть слишком низкими, так что многие операции сортировки перетекают на диск (что очень медленно по сравнению с просто оперативной памятью).

Связанный:

Чтобы на самом деле сжать размер вашей базы данных:

Чтобы измерить размер:

Кроме того: WAL (Write Ahead Log) будет эквивалентен в Postgres для журнала транзакций в SQL Server. Хорошее объяснение в этом связанном ответе на SO:

Эрвин Брандштеттер
источник
10

В соответствии с:

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

Временной счетчик (используемые файлы и пространство) показывает общее количество всех временных файлов, использованных с момента создания кластера. Он не отражает текущее пространство, используемое временными файлами.

Например, моя система показывает почти 700 ГБ временных файлов, но фактическое пространство, занимаемое временными файлами в /var/lib/pgsql/9.3/data/base/pgsql_tmp, в настоящее время составляет всего 53 МБ.

Эдуард Розенберг
источник