Использование PostgreSQL 9.3. У меня было продолжительное обновление запроса вокруг 8M строки. Что-то, очевидно, пошло не так, как надо. 2 дня спустя я получил предупреждение недостаточного пространства на диске. Я остановил запрос, и это - то, что я видел.
root@server:/var/lib/postgresql/9.3/main# du -BM * | sort -n
1M global
1M pg_notify
1M pg_serial
1M pg_snapshots
1M pg_stat
1M pg_stat_tmp
1M pg_tblspc
1M pg_twophase
1M PG_VERSION
1M pg_xlog/archive_status
1M mydb.opts
1M mydb.pid
3M pg_subtrans
7M base/1
7M base/12030
7M base/12035
11M base/22029472
21M pg_clog
72M pg_multixact/offsets
315M pg_log
444M pg_multixact/members
516M pg_multixact
625M pg_xlog
3493M base/pgsql_tmp
61851M base/22053373
65372M base
Отметьте это: 61851M base/22053373
Так как мои фактические данные находятся в табличных областях, сохраненных в различных объемах, я предполагаю, что это - некоторый временный материал транзакции, который накопился.
Существуют некоторые сообщения онлайн о подобных проблемах, но никакое каноническое решение, которое я нашел. В целом совет является "выполненным ВАКУУМОМ, ПОЛНЫМ", и иногда накопленный хлам уходит. Это - то, что я делаю теперь, но это занимает время, и я боюсь, что мог бы заполнить остающееся дисковое пространство (3 ГБ) и принести всему обрушиться.
У кого-либо был опыт с этим? Что хранится здесь? Существует ли безопасный способ быстро освободить это пространство? Или, по крайней мере, переместите его в другое место (у меня есть много пространства на моих дисках табличной области).
Я разобрался. Это моя ошибка. Это новая база данных, созданная коллегой в табличном пространстве по умолчанию вместо одной из наших пользовательских.
Для тех, кто столкнулся с подобными проблемами, вот несколько вещей, которые я узнал во время исследования. base / 22053373
в моем случае является идентификатором базы данных. Вы можете увидеть, какая это база данных, вот так:
SELECT oid, * FROM pg_database
Каждый файл внутри имеет имя oid типа pg (таблица или иначе). Самые большие файлы, вероятно, взяты из ваших самых больших таблиц. Подключитесь к базе данных и выберите из коллекции pg_class
, чтобы узнать, какая.
Прямо сейчас я перемещаю db в настраиваемое табличное пространство с помощью
ALTER DATABASE mydb SET TABLESPACE mytablespace;
Я почти уверен, что это решит мою проблему.
1158475]