NEKED sz@rul, általános felhasználás esetén meg nincs belőle gond, illetve ami van, az jóval kevesebb, mintha a malloc híváskor már nem kapna az érintett app memóriát. Lehetne, pontosabban lehet azt csinálni, hogy ténylegesen csak akkor kapjon valamely processz memóriát, ha rendelkezésre áll annyi, amennyit kér - ez viszont igencsak pazarló lenne. A te rosszul hangolt, alulméretezett postgresql szervered (ami még más egyebet is csinál) egészen pontosan egy darab kiszolgáló, nem általános userland.
Az, hogy a DB a hash indexet nem teszi rendbe automatice, vagy mást, az irreleváns - összeoomlás után kési matyizást igényel. Attól kezdve, hogy dokumentációban ott van, hogy "vigyázz, ha elborul egy worker, akkor a hash index széthullik" nincs miről beszélni: meg kell oldani, hogy ez a helyzet lehetőleg ne forduljon elő.
Mivel általános beállításokkal elfogyhat a rendelkezésre álló memória, ami akár OOM-killer beindulását is okozhatja, így az üzemeltető felelőssége, hogy úgy állítsa be a gépet, hogy legyen elég RAM+swap, és az overcommit legyen tiltva, és a kritikus folyamatok OOM-killertől legyenek védettek.
Nem tudom, hogy miért ilyen az alapbeállítás, de az részletes indoklás nem is érdekel - tudom, hogy van overcommit, van OOM-killer, tudom, hogy mi a default beállítás, és annak milyen következményei lehetnek, és nagyrészt tudom, hogy hogyan lehet ezeket a dolgokat beállítani, hogy másképp viselkedjen az OS.