Ho creato un dump del database utilizzando pg_dump in formato "personalizzato" (-Fc). Questo formato consente di richiamare pg_restore con l'opzione "jobs" (-j8). Le opzioni di lavoro iniziano 8 processi e ripristina la maggior parte delle relazioni nel mio database entro 10 minuti.Come posso impedire l'aggiornamento delle viste materializzate durante pg_restore?
Sono rimasto con 4 processi. Uno di questi è l'aggiornamento di una vista materializzata e gli altri 3 sono indici da applicare a 3 tabelle che la vista materializzata utilizza come origini dati. Gli indici sono "in attesa" in base a pg_stat_activity, presumibilmente perché lo REFRESH
della vista materializzata sta ancora accedendo alle tabelle di origine.
Quando gli indici sono a posto, l'aggiornamento della visualizzazione richiede solo un paio di minuti. Poiché gli indici non sono presenti durante lo REFRESH
, ho interrotto il processo REFRESH
a 17 ore, il che ha reso impossibile il fallimento di pg_restore.
Come posso
- Forza l'ordine degli elementi in modo dagli indici vengono creati prima
- Spegnere l'aggiornamento della vista materializzata e farlo manualmente in seguito
- manipolare il file di dump in formato personalizzato per dire "senza dati"
- Intercept la dichiarazione
REFRESH MATERIALIZED VIEW
e gettarlo nella spazzatura
O qualsiasi altra soluzione che porti a termine il lavoro?
Si prega di segnalare questo problema sulla mailing list di pgsql-hackers APPENA POSSIBILE. Collegati a questa domanda, ma descrivi anche il problema. Se conveniente, un link qui al tuo post tramite archives.postgresql.org sarebbe fantastico. –
Ok, l'ho fatto. Grazie per il consiglio. –