Em 07-04-2011 09:59, Fábio Gibon - Comex System escreveu:
> Wal_buffers é um espaço de memória (na shared_buffers) utilizado para
> armazenar dados das transações correntes.
Não. É o espaço de memória compartilhada (não é do shared buffers) utilizado 
para armazenar dados de uma transação.

> Quando uma transação inicia ela grava seus dados na wal_buffers, porém
> ao terminar (checkpoint por commit ou outros fatores) os dados são
> gravados nos WAL files (pg_xlog).
Não. Os dados só vão para wal buffers no momento do COMMIT; eles permanecem no 
shared buffers até que a transação seja efetivada.

> Se wal_buffers for muito pequeno e tivermos transações grandes irá
> ocorrer gravações nos WAL files com uma frequência maior do que o
> necessário, se o wal_buffers tivesse uma capacidade maior. Ok?
Não. Só há escrita no wal buffers no momento do COMMIT. Neste caso, se o wal 
buffers é pequeno para transação, é escrito algumas páginas nele (e dali para 
disco) e assim sucessivamente até que todos os dados da transação estejam 
escritos no WAL.

> Um outro processo fica lendo os WAL files e gravando definitivamente nos
> data files?
Não. No PostgreSQL, os logs de transação só são lidos durante o *recovery*. Ao 
invés disso, os dados são lidos do shared buffers e escritos nos data files 
pelo processo writer (aka bgwriter).

> * trabalho com outro banco já há muito tempo, então estou tentando
> relacionar os conceitos de UNDO, Redo Log, SGA,...
>
O conceito é um pouco diferente. Talvez lendo [1] te esclareça alguns pontos.


[1] http://wiki.postgresql.org/wiki/PostgreSQL_for_Oracle_DBAs


-- 
   Euler Taveira de Oliveira
   http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a