PostgreSQL "розмір тимчасових файлів"


13

Я імпортував дані в нову базу даних (близько 600м рядків часової позначки, цілого числа, подвійного). Потім я створив декілька індексів і спробував змінити деякі стовпці (вийшов з місця пробіл), база даних вакуумується.

Тепер pgAdmin III повідомляє мені, що " Розмір тимчасових файлів " становить 50G ~ +.

  1. Що це за тимчасові файли? такі як журнал транзакцій SQL Server?
  2. Як я можу їх позбутися, здається, база даних набагато більша, ніж повинна (загальний розмір бази даних - 91 ГБ)

Використання Posgres 9.4.1 на сервері Windows 2012.

Скріншот вкладки "Статистика статистики":

Скріншот вкладки "Статистика статистики"


Що означає значення стовпця "розмір тимчасових файлів"?
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 Мб.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.