![Aufgeblähte PostgreSQL-Tabellen lösen, ohne Lese-/Schreibvorgänge zu beeinträchtigen?](https://rvso.com/image/668784/Aufgebl%C3%A4hte%20PostgreSQL-Tabellen%20l%C3%B6sen%2C%20ohne%20Lese-%2FSchreibvorg%C3%A4nge%20zu%20beeintr%C3%A4chtigen%3F.png)
Ich habe eine große PostgreSQL-Tabelle, die meiner Meinung nach aufgebläht ist, und das möchte ich beheben. Normalerweise könnte ich ein VACUUM FULL
oder tun CLUSTER
, aber ich frage mich, ob ich die Aufblähung beheben kann, ohne die Lese-/Schreibleistung zu beeinträchtigen.
Wenn es zu einem aufgeblähten Index kommt, kann ich gleichzeitig (manuell) einen neuen Index erstellen, der dieselben Dinge indiziert wie der alte, aber unter einem anderen Namen, und wenn er erstellt ist, kann ich den alten, aufgeblähten Index löschen. Auf diese Weise kann ich den aufgeblähten Index mit minimalen Auswirkungen auf die Produktionsnutzung beheben (da immer ein Index vorhanden ist und Lese- und Schreibvorgänge nicht blockiert werden).
Gibt es einen ähnlichen Ansatz, der für Tabellen funktionieren würde? Ich könnte CREATE TABLE newtable LIKE old_bloated_table INCLUDING ...
, wodurch die Tabelle neu erstellt würde. Dann ein Löschen und Umbenennen. Aber die Daten könnten nicht synchron sein. Gibt es eine Möglichkeit, sicherzustellen, dass die Daten zwischen den Tabellen gleich sind? (Im Fall des Index ist der Index immer mit der Tabelle synchronisiert.)