Я использую Postgres (Postgis) 9.4.2 на Mac (10.10.4).
У меня есть пара больших столов (несколько ТБ).
Во время построения индекса для одного из них, который занимает около недели, я наблюдал падение доступного места на жестком диске, поскольку можно было ожидать, что он приблизится почти к той точке, в которой индекс будет завершен, когда перебои в подаче электроэнергии продолжались дольше, чем блок батареи и система. пошел вниз У меня были отключены буферы, и fillfactor=100
во время сборки, так как это статический источник данных. При перезагрузке доступное пространство, оставшееся на диске, находится именно там, где оно было почти в конце построения индекса. Вакуумный анализ не освобождает пространство.
Я попытался уронить стол и снова проглотить, и это не оставило места. Сейчас я нахожусь в месте, где мне не хватает места для построения индекса.
Не застряли ли файлы, сгенерированные во время построения индекса, в каком-то подвешенном состоянии, где они не могут быть удалены системой из-за того, как машина вышла из строя во время отключения питания?
Когда я смотрю на размеры таблиц и индексы в БД (которые являются единственными данными на этом диске), они составляют примерно 6 ТБ . Объем накопителя составляет 8 ТБ , а на диске осталось менее 500 ГБ , поэтому кажется, что где-то потеряно около 1,5 ТБ , что примерно соответствует размеру индекса.
Любые идеи?
SELECT indexrelid::regclass, indrelid::regclass FROM pg_catalog.pg_index WHERE NOT indisvalid;
дает вам?
SELECT r.relname, r.relkind, n.nspname FROM pg_class r INNER JOIN pg_namespace n ON r.relnamespace = n.oid WHERE relkind = 'i';