Re: [pgbr-geral] bigint e bigserial, quando usar?
2015-03-24 10:38 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: Aproveitando esse tema, alguém aqui na comunidade já atingiu o limite do integer com chaves artificiais? O que acontece e o que fazer? Não é uma resposta à tua pergunta, mas acabo de pensar que, com chaves naturais, isso não aconteceria salvo erro de modelagem. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] bigint e bigserial, quando usar?
No meu ponto de vista bigint e bigserial são necessários quando, por exemplo, temos uma chave artificial que pode crescer de forma mais rápida que o normal. Além desse caso, quais seriam os outros casos em que eles são uteis? Aproveitando esse tema, alguém aqui na comunidade já atingiu o limite do integer com chaves artificiais? O que acontece e o que fazer? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Não tinha parado para analisar a capacidade do bigint. Boa observação, talvez eu não precise fazer nada então pois a média de novos registros é de 100 por dia. Em 24 de março de 2015 17:08, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-24 17:05 GMT-03:00 Matheus de Oliveira matioli.math...@gmail.com : Agora, se considerássemos 1000 linhas por segundo, com integer aguentaria apenas 24 dias, já bigint aguentaria 292 bilhões de anos. Corrigindo, seria 292 milhões... Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Em Ter, 2015-03-24 às 12:39 -0300, Leandro Guimarães Faria Corcete DUTRA escreveu: Le 24 mars 2015 12:36:45 GMT-03:00, Matheus Saraiva matheus.sara...@gmail.com a écrit : Em Ter, 2015-03-24 às 11:13 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: Correto, mas vale ressaltar que nem todas as tabelas tem algum campo que possa ser usado como chave natural. Só por erro de modelagem, nem que seja composta de todos os atributos. http://oi59.tinypic.com/2zpsg8y.jpg Qual a chave natural para a tabela Pessoas na imagem? A ideia da tabela pessoas é armazenar os dados de qualquer pessoa seja física ou jurídica. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Tenho um caso que usei bigserial, foi em uma tabela de log das operações que os usuários realizavam no sistema. Calculamos que levaria alguns anos, mas poderia acontecer, e quando acontecesse, pouparíamos trabalho dos futuros dba's. As colunas da tabela eram: - id bigserial (chave artificial) - data/horario - usuario que realizou a operação - descrição da operacao realizada Não consigo encontrar uma chave natural nesse caso Leandro, teria alguma sugestão? Onde estaria o erro de modelagem nesse caso? Lembrando que um usuário pode executar a mesma operação no mesmo segundo / milésimo de segundo, etc. -- Everton 2015-03-24 12:51 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: Em Ter, 2015-03-24 às 12:39 -0300, Leandro Guimarães Faria Corcete DUTRA escreveu: Le 24 mars 2015 12:36:45 GMT-03:00, Matheus Saraiva matheus.sara...@gmail.com a écrit : Em Ter, 2015-03-24 às 11:13 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: Correto, mas vale ressaltar que nem todas as tabelas tem algum campo que possa ser usado como chave natural. Só por erro de modelagem, nem que seja composta de todos os atributos. http://oi59.tinypic.com/2zpsg8y.jpg Qual a chave natural para a tabela Pessoas na imagem? A ideia da tabela pessoas é armazenar os dados de qualquer pessoa seja física ou jurídica. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Tabela em Lock
Versão: PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit Boa tarde. Estou tentando fazer a seguinte alteração na estrutura de uma tabela: ALTER TABLE portal.tb_tarefa ADD COLUMN id_usuario INTEGER; Esta é uma tabela pequena, com 200 registros, mas o comando não executa. Já percebi que algumas vezes quando faço um select em uma tabela com transação ativa a tabela fica em Lock, não deixa eu fazer alteração na estrutura. Como saber quem está travando a tabela de alguma forma para impedir que seja feita qualquer alteração na tabela? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Le 24 mars 2015 12:36:45 GMT-03:00, Matheus Saraiva matheus.sara...@gmail.com a écrit : Em Ter, 2015-03-24 às 11:13 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: Correto, mas vale ressaltar que nem todas as tabelas tem algum campo que possa ser usado como chave natural. Só por erro de modelagem, nem que seja composta de todos os atributos. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela em Lock
On 24/03/2015 12:31, Zan wrote: Versão: PostgreSQL 9.3.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit Boa tarde. Estou tentando fazer a seguinte alteração na estrutura de uma tabela: ALTER TABLE portal.tb_tarefa ADD COLUMN id_usuario INTEGER; Esta é uma tabela pequena, com 200 registros, mas o comando não executa. Já percebi que algumas vezes quando faço um select em uma tabela com transação ativa a tabela fica em Lock, não deixa eu fazer alteração na estrutura. Como saber quem está travando a tabela de alguma forma para impedir que seja feita qualquer alteração na tabela? Obrigado. Me lembrei agora que este é o horário de backup da base. Pode ser isso? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Everton, qual a ação vocês realizariam quando estourar o limite? -Mensagem Original- De: Everton Berz everton.b...@gmail.com Enviada em: 24/03/2015 13:02 Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Assunto: Re: [pgbr-geral] bigint e bigserial, quando usar? Tenho um caso que usei bigserial, foi em uma tabela de log das operações que os usuários realizavam no sistema. Calculamos que levaria alguns anos, mas poderia acontecer, e quando acontecesse, pouparíamos trabalho dos futuros dba's. As colunas da tabela eram: - id bigserial (chave artificial) - data/horario - usuario que realizou a operação - descrição da operacao realizada Não consigo encontrar uma chave natural nesse caso Leandro, teria alguma sugestão? Onde estaria o erro de modelagem nesse caso? Lembrando que um usuário pode executar a mesma operação no mesmo segundo / milésimo de segundo, etc. -- Everton 2015-03-24 12:51 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: Em Ter, 2015-03-24 às 12:39 -0300, Leandro Guimarães Faria Corcete DUTRA escreveu: Le 24 mars 2015 12:36:45 GMT-03:00, Matheus Saraiva matheus.sara...@gmail.com a écrit : Em Ter, 2015-03-24 às 11:13 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: Correto, mas vale ressaltar que nem todas as tabelas tem algum campo que possa ser usado como chave natural. Só por erro de modelagem, nem que seja composta de todos os atributos. http://oi59.tinypic.com/2zpsg8y.jpg Qual a chave natural para a tabela Pessoas na imagem? A ideia da tabela pessoas é armazenar os dados de qualquer pessoa seja física ou jurídica. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
2015-03-24 13:39 GMT-03:00 Matheus Silva matheus.sara...@gmail.com: O email apesar de único não pode ser obrigatório. Uma imagem nunca dará todas as informações, do tipo ‘por que não pode?’. De qualquer maneira, parece um modelo muito ruim esse, mas aqui não é o lugar para explorar todos os problemas potenciais. Como eu disse, em último caso uma chave única com todos os atributos não artificiais. Mas pense pelo outro lado: se não houver uma chave natural (mesmo que composta e não a primária), como evitar a duplicação de dados? Se houver alguma lógica de programa aplicativo que evita duplicações, essa lógica deve ser analisada e implementada declarativamente como uma restrição de integridade, que nada mais é que uma chave natural, seja composta ou simples, seja primária ou alternativa. Pessoalmente eu acho que não se pode generalizar tal coisa, cada caso é um caso. Ciência se faz com generalizações, também chamadas de teorias. Se houver alguma exceção relevante, expande-se a teoria para dar conta da exceção. Não há espaço na Informática para ‘pessoalmentes’; todos esses ‘achos’ devem ser analisados, criticados, e ou formalizados na forma de conceitos, ou rejeitados. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Em 24/03/15, Matheus Saraivamatheus.sara...@gmail.com escreveu: No meu ponto de vista bigint e bigserial são necessários quando, por exemplo, temos uma chave artificial que pode crescer de forma mais rápida que o normal. Além desse caso, quais seriam os outros casos em que eles são uteis? Aproveitando esse tema, alguém aqui na comunidade já atingiu o limite do integer com chaves artificiais? O que acontece e o que fazer? Depende de como foi criada a SEQUENCE, particularmente a opção CYCLE / NO CYCLE: The CYCLE option allows the sequence to wrap around when the maxvalue or minvalue has been reached by an ascending or descending sequence respectively. If the limit is reached, the next number generated will be the minvalue or maxvalue, respectively. If NO CYCLE is specified, any calls to nextval after the sequence has reached its maximum value will return an error. If neither CYCLE or NO CYCLE are specified, NO CYCLE is the default. http://www.postgresql.org/docs/current/interactive/sql-createsequence.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
O email apesar de único não pode ser obrigatório. Pessoalmente eu acho que não se pode generalizar tal coisa, cada caso é um caso. A imagem mostra os campos necessário bem como as chaves unique e campos obrigatórios. -Mensagem Original- De: Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org Enviada em: 24/03/2015 13:34 Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Assunto: Re: [pgbr-geral] bigint e bigserial, quando usar? 2015-03-24 12:51 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: Qual a chave natural para a tabela Pessoas na imagem? Imagem nunca tem todas as informações necessárias à modelagem. Uma das razões para evitar modelagem por diagramas. A ideia da tabela pessoas é armazenar os dados de qualquer pessoa seja física ou jurídica. Erro de normalização. Mas, no caso, já está marcado o endereço de correio eletrônico (email_pessoas) como chave natural. O que, presumivelmente, economizaria alguns octetos e junções se fosse usado como chave estrangeira em vez de uma chave artificial redundante. Chave artificial sempre é inerentemente redundante, embora possa economizar octetos se a chave natural for composta e grande. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
2015-03-24 13:55 GMT-03:00 Matheus Silva matheus.sara...@gmail.com: Desculpe Brother mas não concordo com você, não vou aqui entrar no mérito para não desviar o foco do email. Você pode apresentar as desvantagens da minha modelagem e eu posso enumerar as vantagens, bem como as desvantagens da sua proposta, convém a que preparou a modelagem pesar os prós e contras para o caso. Claro. Como eu havia dito, lista de discussões não é o lugar para debater modelos específicos, só conceitos e suas aplicações. Mas veja que você não conseguiu analisar a questão da duplicidade que eu propus, que é a essência do conceito de chave, e de que as ‘chaves’ artificiais não dão conta. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Desculpe Brother mas não concordo com você, não vou aqui entrar no mérito para não desviar o foco do email. Você pode apresentar as desvantagens da minha modelagem e eu posso enumerar as vantagens, bem como as desvantagens da sua proposta, convém a que preparou a modelagem pesar os prós e contras para o caso. -Mensagem Original- De: Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org Enviada em: 24/03/2015 13:48 Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Assunto: Re: [pgbr-geral] bigint e bigserial, quando usar? 2015-03-24 13:39 GMT-03:00 Matheus Silva matheus.sara...@gmail.com: O email apesar de único não pode ser obrigatório. Uma imagem nunca dará todas as informações, do tipo ‘por que não pode?’. De qualquer maneira, parece um modelo muito ruim esse, mas aqui não é o lugar para explorar todos os problemas potenciais. Como eu disse, em último caso uma chave única com todos os atributos não artificiais. Mas pense pelo outro lado: se não houver uma chave natural (mesmo que composta e não a primária), como evitar a duplicação de dados? Se houver alguma lógica de programa aplicativo que evita duplicações, essa lógica deve ser analisada e implementada declarativamente como uma restrição de integridade, que nada mais é que uma chave natural, seja composta ou simples, seja primária ou alternativa. Pessoalmente eu acho que não se pode generalizar tal coisa, cada caso é um caso. Ciência se faz com generalizações, também chamadas de teorias. Se houver alguma exceção relevante, expande-se a teoria para dar conta da exceção. Não há espaço na Informática para ‘pessoalmentes’; todos esses ‘achos’ devem ser analisados, criticados, e ou formalizados na forma de conceitos, ou rejeitados. -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Nesse caso a ideia era reiniciar a sequence. Os registros antigos eram movidos para outro repositório (poderia ser uma tabela ou banco distinto, ou até outra tecnologia de armazenamento). A aplicação teria que ser ajustada pra trabalhar desta forma. Um problema é que todas as referências eram movidas também, então nesse caso foi viável pois tinha somente uma ou duas tabelas dependentes. Em uma estrutura maior concordo que o problema seria mais complexo e eu não teria outra sugestão no momento. -- Everton 2015-03-24 13:29 GMT-03:00 Matheus Silva matheus.sara...@gmail.com: Everton, qual a ação vocês realizariam quando estourar o limite? -- De: Everton Berz everton.b...@gmail.com Enviada em: 24/03/2015 13:02 Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Assunto: Re: [pgbr-geral] bigint e bigserial, quando usar? Tenho um caso que usei bigserial, foi em uma tabela de log das operações que os usuários realizavam no sistema. Calculamos que levaria alguns anos, mas poderia acontecer, e quando acontecesse, pouparíamos trabalho dos futuros dba's. As colunas da tabela eram: - id bigserial (chave artificial) - data/horario - usuario que realizou a operação - descrição da operacao realizada Não consigo encontrar uma chave natural nesse caso Leandro, teria alguma sugestão? Onde estaria o erro de modelagem nesse caso? Lembrando que um usuário pode executar a mesma operação no mesmo segundo / milésimo de segundo, etc. -- Everton 2015-03-24 12:51 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: Em Ter, 2015-03-24 às 12:39 -0300, Leandro Guimarães Faria Corcete DUTRA escreveu: Le 24 mars 2015 12:36:45 GMT-03:00, Matheus Saraiva matheus.sara...@gmail.com a écrit : Em Ter, 2015-03-24 às 11:13 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: Correto, mas vale ressaltar que nem todas as tabelas tem algum campo que possa ser usado como chave natural. Só por erro de modelagem, nem que seja composta de todos os atributos. http://oi59.tinypic.com/2zpsg8y.jpg Qual a chave natural para a tabela Pessoas na imagem? A ideia da tabela pessoas é armazenar os dados de qualquer pessoa seja física ou jurídica. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] bigint e bigserial, quando usar?
Em Ter, 2015-03-24 às 11:13 -0300, Guimarães Faria Corcete DUTRA, Leandro escreveu: 2015-03-24 10:38 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: Aproveitando esse tema, alguém aqui na comunidade já atingiu o limite do integer com chaves artificiais? O que acontece e o que fazer? Não é uma resposta à tua pergunta, mas acabo de pensar que, com chaves naturais, isso não aconteceria salvo erro de modelagem. Correto, mas vale ressaltar que nem todas as tabelas tem algum campo que possa ser usado como chave natural. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela em Lock
2015-03-24 12:31 GMT-03:00 Zan zan...@farmaponte.com.br: ALTER TABLE portal.tb_tarefa ADD COLUMN id_usuario INTEGER; Esta é uma tabela pequena, com 200 registros, mas o comando não executa. Já percebi que algumas vezes quando faço um select em uma tabela com transação ativa a tabela fica em Lock, não deixa eu fazer alteração na estrutura. Como saber quem está travando a tabela de alguma forma para impedir que seja feita qualquer alteração na tabela? Um ALTER TABLE para adicionar coluna requer um bloqueio exclusivo (AccessExclusiveLock) na tabela, que é o mais restritivo. Isso significa que qualquer transação, mesmo que somente com um SELECT, esteja usando a tabela, o ALTER TABLE ficará bloqueado, e consequentemente, quando este pegar o bloqueio, as demais transações que ficarão bloqueadas. Veja que apesar disso, essa é uma operação quase instância (apenas algumas atualizações de catálogo), e não há rescrita da tabela, então o tamanho desta não importa. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! 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] Tabela em Lock
2015-03-24 12:34 GMT-03:00 Zan zan...@farmaponte.com.br: Me lembrei agora que este é o horário de backup da base. Pode ser isso? Se for um backup pg_dump, com certeza. O pg_dump requer bloqueio usando um AccessShareLock, o que conflita com o AccessExclusiveLock (na verdade qualquer um conflita com esse último), requerido pelo seu ALTER TABLE. Já com um backup físico esse problema não aconteceria. Esqueci de comentar na outra mensagem, mas você pode usar as consultas [1] e [2] para verificar com mais detalhes o que está acontecendo. [1] https://wiki.postgresql.org/wiki/Lock_dependency_information [2] https://wiki.postgresql.org/wiki/Lock_Monitoring Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! 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] bigint e bigserial, quando usar?
2015-03-24 10:38 GMT-03:00 Matheus Saraiva matheus.sara...@gmail.com: No meu ponto de vista bigint e bigserial são necessários quando, por exemplo, temos uma chave artificial que pode crescer de forma mais rápida que o normal. Além desse caso, quais seriam os outros casos em que eles são uteis? Crescer de forma rápida tem dois pontos: * O primeiro é, os registros antigos serão apagados de alguma forma? Se forem, você pode usar a opção CYCLE ao criar sua SEQUENCE, assim sendo quando atingir o limite de 2147483647 (2^31 - 1), o valor voltaria à 1. * O segundo é quando realmente vários registros irão permanecer, ou não consegue-se controlar os ids que ficarão. Nesse caso não tem jeito, se você espera mais que 2^31 registros, então deves usar bigint/bigserial. Em geral, bigint e int oferecem performance bem similares, apesar de bigint ser o dobro do tamanho, veja alguns testes bem bacanas feitos pelo Depesz em [1] (int = int4 e bigint = int8). Agora, vamos à uma análise mais prática, assumindo o segundo caso, vamos pensar num modelo onde são inseridos 10 linhas por segundo, com integer iria exaurir em aprox. 6 anos e 10 meses, já com bigint em 29 bilhões de anos. Agora, se considerássemos 1000 linhas por segundo, com integer aguentaria apenas 24 dias, já bigint aguentaria 292 bilhões de anos. Por curiosidade, 1 linhas/segundo seria int=2 dias e bigint=29 milhões de anos. Essas contas de exemplo são só pra mostrar a magnitude que um bigint pode chegar. Daí vem a dúvida, será que compensa usar int em casos de dúvida só para economizar 4bytes por linha (que nem sempre são de fato economizados devido à alinhamento)? Por outro lado, será que vale a pena usar um UUID pensando que bigint *não vai aguentar* (vejam acima, milhões de anos)? Bem, se alguém quiser conferir testar, as contas que usei nas informações acima foram (se alguém achar um erro, avisa aí): = SELECT txsec, justify_interval(((2^31) / txsec) * interval '1 sec') AS int_usage, ((2^63) / txsec) / 31536000 AS bigint_usage FROM (VALUES(10),(1000),(1),(10)) t(txsec); txsec | int_usage | bigint_usage ++-- 10 | 6 years 10 mons 25 days 12:19:24.8 | 29247120867.7536 1000 | 24 days 20:31:23.648 | 292471208.677536 1 | 2 days 11:39:08.3648 | 29247120.8677536 10 | 05:57:54.83648 | 2924712.08677536 (4 rows) Aproveitando esse tema, alguém aqui na comunidade já atingiu o limite do integer com chaves artificiais? O que acontece e o que fazer? Basta alterar o tipo: ALTER TABLE tablename ALTER columname TYPE bigint; O problema é que essa é uma operação custosa, pois é necessário reescrever a tabela toda (apesar de ser possível fazer em lotes/batches), além disso é necessário refazer as visões e funções para casar os tipos, caso tenham dependências. [1] http://www.depesz.com/2014/12/06/how-much-slower-are-numerics/ Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! 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] bigint e bigserial, quando usar?
2015-03-24 17:05 GMT-03:00 Matheus de Oliveira matioli.math...@gmail.com: Agora, se considerássemos 1000 linhas por segundo, com integer aguentaria apenas 24 dias, já bigint aguentaria 292 bilhões de anos. Corrigindo, seria 292 milhões... Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! 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