Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá gente, eu sou meio iniciante em bancos de dados, e minha duvida é o que acontece após um tabela de um banco de dados (Como exemplo o PostgreSQL) receber o numero máximo de registros com base no id ou chave primaria? Eu sei que seria necessários muitos registros para isso acontecer mas queria saber o que aconteceria e como prevenir isso, agora que esta tudo no começo.
Motta, para id não se usa o bigint ou o próprio int, e os mesmos não possuem um limite máximo de ids diferentes? e a cada registro não se incrementa o numero de registros com + 1 gerando assim uma sequencia ou é possível criar registros com ids com um tamanho grande o bastante como você falou? Eu sei que não tenho muito conhecimento nessa área mas quero muito resolver essa duvida que eu tenho desde quando comecei a trabalhar com bancos de dados.
O type da coluna chave deve ser escolhido conforme a quantidade prevista de registro que a tabela terá, mascuma BOA folga.
Veja o manual para os tipos e seus limites só não tenha uma preocupacão excessiva em economizar bytes na definição da chave.
então o tipo que oferece mais opções é o bigint, mas eu ainda o vejo como limitado, e por exemplo, caso haja 55 registros em uma tabela e 5 sejam pagados, ao criar um novo registro o mesmo não possuirá o id 56 caso o id seja gerado pela incrementação (No caso do MySQL em especifico)? E quando esse contador interno do MySQL chegar ao numero máximo de registros mesmo não havendo tal quantia de registros, o que ocorrerá?
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
Bigint, dá e sobra pelo que vi.
Realmente, este não é um problema, o autoincrement resolve isto.
É uma chave única, não ?!
Sim é uma chave unica, mas sendo uma tabela onde os dados serão recebidos e apagados em grande escala não poderia levar a se esgotar as possibilidades de ids? Por exemplo em um tabela que armazena as informações de emails enviados com link para validar algum processo, os registros seriam inseridos e apagados freqüentemente e em grande escala supondo o grande numero de usuários a utilizar o sistema. Eu sei que parece um questão boba pois o numero de opções oferecidas pelo bigint é imensa mas com um certo tempo se esgotaria e apesar de considerar que tudo é finito, eu sempre me preocupei muito com criar meus sistemas o quanto mais a prova de falhas possível.
18.446.744.073.709.551.615
The unsigned range is 0 to 18446744073709551615.
Somos 7.000.000.000 devhumanos na Terra ...
Mas se caso utilizasse o auto_increment no MySQL por exemplo, não poderia haver o problema se dois duas requisições de inserção de dados gerados ao mesmo tempo por 2 usuários?
Não conheço este detalhe da implementação do MySql mas creio que não, haverá um registro que será tratado antes.
A documentação "agarante" a unicidade.
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
Aqui um outro tópico que acabou chegando nessa pauta. http://forum.imasters.com.br/topic/511864-utilizando-uniqid-como-id/
Como disse não me parece um problema.
Defina um tamanho grande o sufiente para que isto não aconteça e ponto final.
A "economia" nestes casos só trará aborrecimentos.