Re: [pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-29 Por tôpico Matheus Ricardo Espanhol
Olá Fabrízio,

Dando uma pesquisada achei a mensagem do Sr. Tom Lane [1] dizendo que esta
 coluna é de uso interno e que ele acredita que seja o número de valores
 disponíveis sem escrever outra entrada no WAL...


É isso mesmo Fabrízio. O Postgres escreve no WAL 32 valores de uma só vez. A
cada chamada
a função nextval() este valor é decrementado. O campo log_cnt controla esse
processo. Quando log_cnt chega a 0, a próxima chamada a nextval(), ao invés
de incrementar 1 no WAL, escreve novamente 32 a frente.

Este valor é definido na constante SEQ_LOG_VALS. Segundo Tom Lane, esse
comportamento é para evitar o overhead de escrita no WAL.

Quanto ao log_shipping, ao replicar o log de transação(que possui valores a
frente de currval()) e restaura-lo em outro cluster, o valor atual da
sequence pode variar de 1 a 32 a frente, ou até mesmo ser igual.

Abraço.








-- 
Matheus Ricardo Espanhol
---
Dextra Sistemas
http://www.dextra.com.br/postgres/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-29 Por tôpico Fabrízio de Royes Mello
Em 29 de março de 2010 09:02, Matheus Ricardo Espanhol 
matheusespan...@gmail.com escreveu:

 Olá Fabrízio,


Opa...



 É isso mesmo Fabrízio. O Postgres escreve no WAL 32 valores de uma só vez.
 A cada chamada
 a função nextval() este valor é decrementado. O campo log_cnt controla esse
 processo. Quando log_cnt chega a 0, a próxima chamada a nextval(), ao invés
 de incrementar 1 no WAL, escreve novamente 32 a frente.

 Este valor é definido na constante SEQ_LOG_VALS. Segundo Tom Lane, esse
 comportamento é para evitar o overhead de escrita no WAL.


Beleza ... dei uma olhada la em src/backend/command/sequence.c e essa
constante está bem documentada até... entao no caso de alguma interrupção
eventual do servidores poderemos ter esse pulo de 32 na sequence então...


Quanto ao log_shipping, ao replicar o log de transação(que possui valores a
 frente de currval()) e restaura-lo em outro cluster, o valor atual da
 sequence pode variar de 1 a 32 a frente, ou até mesmo ser igual.


Entendi... muito obrigado pelas informações...


-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-29 Por tôpico Matheus Ricardo Espanhol
 Beleza ... dei uma olhada la em src/backend/command/sequence.c e essa
 constante está bem documentada até... entao no caso de alguma interrupção
 eventual do servidores poderemos ter esse pulo de 32 na sequence então...


Exatamente. Se alterarmos a constante para 0 e recompilar, cada nextval()
irá escrever no WAL.
O quanto isso afeta na performance não sei dizer, acredito que não afetará
muito. Por outro lado
não é bom contrariar os deuses do Postgres.

Na prática, este pulo que pode haver no valor corrente da sequence, não
deve ser problema, uma vez
que a aplicação não deve depender do valor resultante de nextal().




-- 
Matheus Ricardo Espanhol
---
Dextra Sistemas
http://www.dextra.com.br/postgres/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-29 Por tôpico Fabrízio de Royes Mello
Em 29 de março de 2010 11:36, Matheus Ricardo Espanhol 
matheusespan...@gmail.com escreveu:


 Exatamente. Se alterarmos a constante para 0 e recompilar, cada nextval()
 irá escrever no WAL.
 O quanto isso afeta na performance não sei dizer, acredito que não afetará
 muito. Por outro lado
 não é bom contrariar os deuses do Postgres.


Também acredito que não seja necessário alterar esse valor...



 Na prática, este pulo que pode haver no valor corrente da sequence, não
 deve ser problema, uma vez
 que a aplicação não deve depender do valor resultante de nextal().


É verdade, mas em função de um modelo de dados ruim temos uma entidade que
utiliza uma sequence para uma numeração sequencial... e essa é uma chave
natural que deve obedecer uma sequencia... sendo assim é necessário na
realidade rever o modelo e ajustar a aplicação.

Quanto ao log_cnt eu precisava ter certeza da sua funcionalidade...

Mais uma vez obrigado pela atenção!

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-26 Por tôpico Fabrízio de Royes Mello
Pessoal,

Recentemente em um cliente tive o problema de uma sequence pular o valor
32 por duas vezes... dando uma olhada na mesma pude observar que o valor da
coluna log_cnt está 32:

base=# select * from protocolo.protprocesso_p58_codproc_seq ;
sequence_name | last_value | increment_by |
max_value  | min_value | cache_value | log_cnt | is_cycled | is_called
--++--+-+---+-+-+---+---
 protprocesso_p58_codproc_seq |   4532 |1 |
9223372036854775807 | 1 |   1 |  32 | f | t
(1 row)

Dando uma pesquisada achei a mensagem do Sr. Tom Lane [1] dizendo que esta
coluna é de uso interno e que ele acredita que seja o número de valores
disponíveis sem escrever outra entrada no WAL...

Pelo que entendi o PostgreSQL gera uma espécie de cache até uma próxima
escrita do WAL e o caso do valor ter pulado seria quando houvesse algum
problema no servidor, tipo uma para inesperada do mesmo... é isso mesmo???
ou alguém tem outra informação a respeito???

Procurei na documentação oficial do PostgreSQL e não achei nenhum lugar que
explicasse a estrutura interna de uma sequence... não seria o caso de
providenciarmos tal documentação, conforme sugere o Sr. Tom Lane??



[1] http://archives.postgresql.org/pgsql-docs/2003-10/msg00036.php

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-26 Por tôpico JotaComm
Olá, Fabrízio

Blz?

Em 26 de março de 2010 12:03, Fabrízio de Royes Mello 
fabriziome...@gmail.com escreveu:

 Pessoal,

 Recentemente em um cliente tive o problema de uma sequence pular o valor
 32 por duas vezes... dando uma olhada na mesma pude observar que o valor da
 coluna log_cnt está 32:

 base=# select * from protocolo.protprocesso_p58_codproc_seq ;
 sequence_name | last_value | increment_by |
 max_value  | min_value | cache_value | log_cnt | is_cycled | is_called

 --++--+-+---+-+-+---+---
  protprocesso_p58_codproc_seq |   4532 |1 |
 9223372036854775807 | 1 |   1 |  32 | f | t
 (1 row)

 Dando uma pesquisada achei a mensagem do Sr. Tom Lane [1] dizendo que esta
 coluna é de uso interno e que ele acredita que seja o número de valores
 disponíveis sem escrever outra entrada no WAL...

 Pelo que entendi o PostgreSQL gera uma espécie de cache até uma próxima
 escrita do WAL e o caso do valor ter pulado seria quando houvesse algum
 problema no servidor, tipo uma para inesperada do mesmo... é isso mesmo???
 ou alguém tem outra informação a respeito???

 Procurei na documentação oficial do PostgreSQL e não achei nenhum lugar que
 explicasse a estrutura interna de uma sequence... não seria o caso de
 providenciarmos tal documentação, conforme sugere o Sr. Tom Lane??


 Se a minha memória não falha o Léo Cezar uma vez teve este problema com
isso na época em que trabalhávamos juntos, porém eu não participei disso.
Acredito que ele pode dar alguns comentários interessantes. Senão me engano
este problema ocorreu num ambiente com o Log Shipping. Léo estou correto?
Pode tecer alguns comentários sobre o assunto?



 [1] http://archives.postgresql.org/pgsql-docs/2003-10/msg00036.php

 --
 Fabrízio de Royes Mello
  Blog sobre TI: http://fabriziomello.blogspot.com

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



[]s
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Coluna log_cnt de uma Sequence

2010-03-26 Por tôpico Fabrízio de Royes Mello
Em 26 de março de 2010 12:09, JotaComm jota.c...@gmail.com escreveu:

 Olá, Fabrízio

 Blz?


Grande Jota!!!

Fora a correria natural na nossa profissão (rsrs), tudo na paz!!!



 Se a minha memória não falha o Léo Cezar uma vez teve este problema com
 isso na época em que trabalhávamos juntos, porém eu não participei disso.
 Acredito que ele pode dar alguns comentários interessantes. Senão me engano
 este problema ocorreu num ambiente com o Log Shipping. Léo estou correto?
 Pode tecer alguns comentários sobre o assunto?



Só para comentar, não estamos utilizando Log Shipping no cliente onde
ocorreu esse problema... fico no aguardo por mais comentários...

Obrigado pela atenção!

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral