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
