Sto eseguendo Postgres (Postgis) 9.4.2 su un Mac (10.10.4).
Ho un paio di grandi tavoli (diversi TB).
Durante un indice basato su uno di essi che dura circa una settimana, ho visto lo spazio disponibile in HD diminuire come ti aspetteresti fino al punto in cui l'indice sarebbe finito quando un'interruzione di corrente è durata più a lungo rispetto all'unità batteria e al sistema andato giù. Avevo i buffer disattivati e fillfactor=100
durante la compilazione poiché è un'origine dati statica. Al riavvio, lo spazio disponibile rimasto sull'unità è esattamente dove si trovava quasi alla fine della generazione dell'indice. L'analisi del vuoto non libera lo spazio.
Ho provato a far cadere il tavolo e re-ingerire, e questo non ha lasciato spazio. Ora sono in un posto dove non ho abbastanza spazio per costruire l'indice.
I file generati durante la generazione dell'indice sono bloccati in alcuni limbo in cui non possono essere rimossi dal sistema a causa del modo in cui la macchina è caduta durante l'interruzione di corrente?
Quando guardo le dimensioni della tabella + gli indici nel db (che è l'unico dato su quell'unità ) si sommano a circa 6 TB . L'unità ha 8 TB e rimangono meno di 500 GB sull'unità, quindi sembra che ci siano circa 1,5 TB persi da qualche parte che è circa la dimensione che l'indice sarebbe stato.
Qualche idea?
SELECT indexrelid::regclass, indrelid::regclass FROM pg_catalog.pg_index WHERE NOT indisvalid;
ti dà?
SELECT r.relname, r.relkind, n.nspname FROM pg_class r INNER JOIN pg_namespace n ON r.relnamespace = n.oid WHERE relkind = 'i';