Re: [pgbr-geral] Coluna log_cnt de uma Sequence
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
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
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
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
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
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
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