Ich habe Daten in eine neue Datenbank importiert (ca. 600 m Zeilen mit Zeitstempel, Ganzzahl, Doppel). Ich habe dann ein paar Indizes erstellt und versucht, ein paar Spalten zu ändern (es sind einige Speicherplatzprobleme aufgetreten). Die Datenbank wurde gesaugt.
Jetzt sagt mir pgAdmin III, dass die " Größe der temporären Dateien " 50G ~ + ist.
- Was sind diese temporären Dateien? sind diese wie SQL Server-Transaktionsprotokoll?
- Wie kann ich sie loswerden, es scheint, dass die Datenbank viel größer ist als sie sollte (die Gesamtgröße der Datenbank beträgt 91 GB)
Verwenden von Posgres 9.4.1 auf einem Windows 2012-Server.
Ein Screenshot der Registerkarte "Datenbankstatistik":
postgresql
pgadmin
Ofiris
quelle
quelle
Antworten:
Ich habe nichts in der pgAdmin-Dokumentation gefunden, aber der Quellcode zeigt die Abfrage hinter diesen Einträgen (hinzugefügt für Postgres 9.2+):
Es läuft auf Folgendes hinaus:
Und das Postgres-Handbuch enthält Details für
pg_stat_database
:Beachten Sie, dass diese Werte nicht zur Größe Ihrer Datenbank beitragen. Sie weisen jedoch darauf hin, dass Ihre Einstellung für
work_mem
möglicherweise zu niedrig ist, sodass viele Sortiervorgänge auf die Festplatte übertragen werden (was im Vergleich zu nur RAM sehr langsam ist).Verbunden:
So komprimieren Sie die Größe Ihrer Datenbank:
Größe messen:
Abgesehen davon: WAL (Write Ahead Log) entspricht in Postgres dem Transaktionsprotokoll in SQL Server. Schöne Erklärung in dieser verwandten Antwort zu SO:
quelle
Gemäß:
http://www.postgresql.org/message-id/[email protected]
Der Zeitzähler (verwendete Dateien und Speicherplatz) zeigt die Gesamtzahl aller seit der wahrscheinlich Clustererstellung verwendeten Zeitdateien an. Es gibt nicht den aktuellen Speicherplatz an, der von temporären Dateien verwendet wird.
Mein System zeigt zum Beispiel fast 700 GB an verwendeten temporären Dateien, aber der tatsächliche Speicherplatz, der von temporären Dateien in /var/lib/pgsql/9.3/data/base/pgsql_tmp beansprucht wird, beträgt derzeit nur 53 MB.
quelle