Używam postgres (postgis) 9.4.2 na komputerze Mac (10.10.4).
Mam kilka dużych stołów (kilka TB).
Podczas budowania indeksu na jednym z nich, który zajmuje około tygodnia, obserwowałem spadek dostępnej przestrzeni HD, ponieważ można oczekiwać prawie tego momentu, w którym indeks zostałby ukończony, gdy przerwa w zasilaniu trwałaby dłużej niż akumulator i system zszedł. Miałem wyłączone bufory i fillfactor=100
podczas kompilacji, ponieważ jest to statyczne źródło danych. Po ponownym uruchomieniu dostępne miejsce na dysku znajduje się dokładnie tam, gdzie było prawie na końcu kompilacji indeksu. Analiza próżniowa nie zwalnia przestrzeni.
Próbowałem upuścić stół i ponownie spożywać, ale to nie upuściło miejsca. Teraz jestem w miejscu, w którym nie mam wystarczająco dużo miejsca, aby zbudować indeks.
Czy pliki generowane podczas kompilacji indeksu utknęły w zawieszeniu, w którym system nie może ich usunąć z powodu awarii komputera podczas awarii zasilania?
Kiedy patrzę na rozmiary tabel + indeksy w db (które są jedynymi danymi na tym dysku), sumują się do około 6 TB . Dysk ma pojemność 8 TB , a na dysku pozostało mniej niż 500 GB , więc wydaje się, że gdzieś utracono około 1,5 TB , co odpowiada rozmiarowi indeksu.
Jakieś pomysły?
SELECT indexrelid::regclass, indrelid::regclass FROM pg_catalog.pg_index WHERE NOT indisvalid;
Ci daje?
SELECT r.relname, r.relkind, n.nspname FROM pg_class r INNER JOIN pg_namespace n ON r.relnamespace = n.oid WHERE relkind = 'i';