"Dimensione dei file temporanei" di PostgreSQL


12

Ho importato i dati in un nuovo database (circa 600m righe di data / ora, numero intero, doppio). Ho quindi creato alcuni indici e ho provato a modificare alcune colonne (ho ottenuto alcuni problemi di spazio), il database è vuoto.

Ora pgAdmin III mi dice che la " Dimensione dei file temporanei " è 50G ~ +.

  1. Cosa sono questi file temporanei? sono come il registro delle transazioni di SQL Server?
  2. Come posso liberarmene, sembra che il database sia molto più grande di quanto dovrebbe (la dimensione totale del database è di 91 GB)

Utilizzo di Posgres 9.4.1 su un server Windows 2012.

Uno screenshot della scheda delle statistiche del database:

Uno screenshot della scheda delle statistiche del database


Cosa rappresenta il valore della colonna "dimensione dei file temporanei"?
Ofiris,

Risposte:


12

Non ho trovato nulla nella documentazione di pgAdmin, ma il codice sorgente rivela la query dietro queste voci (aggiunta per Postgres 9.2+):

Si riduce a:

SELECT temp_files AS "Temporary files"
     , temp_bytes AS "Size of temporary files"
FROM   pg_stat_database db;

E il manuale di Postgres contiene dettagli perpg_stat_database :

tmp_files bigint Numero di file temporanei creati da query in questo database. Vengono contati tutti i file temporanei, indipendentemente dal motivo per cui il file temporaneo è stato creato (ad esempio, ordinamento o hashing) e indipendentemente dall'impostazione log_temp_files .

temp_bytes bigint Quantità totale di dati scritti in file temporanei tramite query in questo database. Vengono contati tutti i file temporanei, indipendentemente dal motivo per cui il file temporaneo è stato creato e indipendentemente dall'impostazione log_temp_files .

Si noti che questi valori non contribuiscono alla dimensione del database. Ma indicano che l'impostazione per work_mempotrebbe essere troppo bassa, in modo che molte operazioni di ordinamento si riversino sul disco (che è molto lento rispetto alla sola RAM).

Relazionato:

Per compattare effettivamente le dimensioni del database:

Per misurare le dimensioni:

A parte: WAL (Write Ahead Log) sarebbe equivalente in Postgres per il log delle transazioni in SQL Server. Bella spiegazione in questa risposta correlata su SO:


10

Secondo:

http://www.postgresql.org/message-id/BLU0-SMTP179B92C5102247CD961A4B3CF2A0@phx.gbl

Il contatore temporaneo (file e spazio utilizzato) mostra un totale di tutti i file temporanei utilizzati dalla probabile creazione del cluster. Non riflette lo spazio corrente utilizzato dai file temporanei.

Il mio sistema, ad esempio, mostra quasi 700 GB di file temporanei utilizzati, ma lo spazio effettivo occupato dai file temporanei in /var/lib/pgsql/9.3/data/base/pgsql_tmp è attualmente di soli 53 MB.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.