vedo una grande differenza tra la dimensione effettiva del database (sul disco fisso e visualizzato da pg_database_size()
chiamata) e la dimensione, calcolato sommando le dimensioni delle relazioni totali recuperate da pg_total_relation_size()
.
Il primo è 62G e l'ultimo è 16G (a destra la differenza dei dati cancellati dal più grande tabella)
Ecco una query semplificata, che può dimostrare che la differenza sul mio sistema:
select current_database(),
pg_size_pretty(sum(total_relation_raw_size)::bigint) as calculated_database_size,
pg_size_pretty(pg_database_size(current_database())) as database_size
from (select pg_total_relation_size(relid) as total_relation_raw_size
from pg_stat_all_tables -- this includes also system tables shared between databases
where schemaname != 'pg_toast'
) as stats;
Sembra che ci siano alcuni dati penzoloni lì. All'apparire di questa situazione, dopo aver scaricato e riempito con un sacco di dati inutilizzati da quel DB.
PS: suppongo, che si trattava di un danneggiamento del database di qualche tipo ... L'unico modo per uscire da questa situazione è stato quello di passare al database di hot-standby ...
Puoi dare un esempio delle dimensioni e delle differenze? Quale era più grande? –
O, scusate, ho dimenticato di menzionare i numeri reali: 62G per la dimensione db mostrata da 'pg_database_size()'; 17G per la somma delle dimensioni delle relazioni – valgog