PostgreSQL 9: l'aspirazione di una tabella sul primario si replica sul mirror?


18

Esecuzione di PostgreSQL 9.0.1, con la replica in streaming che aggiorna un'istanza mirror di sola lettura. L'auto-vaccuum è attivo sul primario, ad eccezione di alcune tabelle che non vengono aspirate dal demone auto-vacuum, nel tentativo di ridurre l'IO del business hour. Queste tabelle sono "viste materializzate".

Ogni notte a mezzanotte, eseguiamo un vuoto nel database per ripulire quelle tabelle che sono escluse dal vuoto automatico. Mi chiedo se quel processo si replica allo specchio o se devo impostare anche il vuoto sullo specchio?


1
Ottima domanda La replica di streaming utilizza il registro Write-Ahead, quindi si riduce alla registrazione delle modifiche apportate da VACUUM.
DerfK,

1
È interessante notare che ho attivato l'aspirapolvere automatico sul mirror di sola lettura, ma guardando nelle statistiche della tabella non sembra aver mai funzionato; poiché tutte le tabelle elencano 0 tuple vive / morte e non sono visibili storie di vuoti o analisi.
Scott Herbert,

developer.postgresql.org/pgdocs/postgres/hot-standby.html - 25.5.2. Gestione dei conflitti di query - "L'applicazione di un record di pulizia del vuoto da WAL è in conflitto con transazioni di standby le cui istantanee possono ancora" vedere "una delle righe da rimuovere ............. Questo sembra suggerire che VACUUM è registrato WAL, e quindi è un "sì" alla mia domanda. Mi piacerebbe comunque ottenere qualche informazione in più da un guru del PG!
Scott Herbert,

I dati delle viste dinamiche dovrebbero essere diversi su primario rispetto allo standby. Queste viste usano le funzioni di sistema per raccogliere i dati e quelle funzioni leggono i dati dalle strutture di dati in memoria piuttosto che da una tabella fisica. Ad esempio, l'esecuzione di un ANALYZE sul primario aggiornerà le statistiche dell'ottimizzatore (utilizzate per la pianificazione delle query) anche in standby, ma il tempo in cui ANALYZE è stato eseguito sulla tabella non si rifletterà nei pg_stat_user_tables poiché tali informazioni non sono registrate nella transazione registri.
Gurjeet Singh,

Quindi la conclusione è che AUTOVACUUM che si verifica sul master non ha alcun effetto sul suo funzionamento sullo slave, giusto? Supponendo che questo sia il caso, se ho una tabella che NON ha aggiornamenti / eliminazioni, solo inserimenti, sarebbe possibile disabilitare l'autovacuum nel master, poiché sto solo scrivendo su di esso e le letture avvengono sullo slave.
Henley Chiu,

Risposte:


16

Il vuoto e il vuoto automatico si replicano come qualsiasi altra operazione di scrittura. (Beh, sono ovviamente un po 'speciali internamente, ma per quanto riguarda la tua domanda, sono normali operazioni di scrittura.) Eseguire il vuoto o l'autovacuum sullo slave non fa nulla e non è necessario.

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.