duplicidade em mysql com muitos registros simultâneos
já pesquisei e li muita coisa sobre o mysql mas ficou uma dúvida que me persegue a tempos. eu sei que posso definir um campo primary key ou unique ou auto increment para que ele não seja duplicado e sei também que isso vou falar tem possibilidades muito remotas de acontecer mas vamos supor que um dia aconteça. eu crio um site aonde as pessoas se cadastram. suponhamos que assim que eu divulgo ele nas redes sociais e outros sites, blogs etc venha um grande número de pessoas se cadastrar. vamos supor umas 800 pessoas e 50 delas clicando no botão de confirmar cadastro exatamente no mesmo instante. como o mysql lida com isso para garantir que campos únicos não se dupliquem como por exemplo um auto increment que seria a id nesse caso? pois se 50 pessoas clicaram em confirmar exatamente no mesmo instante se supõe que todos eles enxergarão o mesmo max number nesse campo. teria o mysql uma forma de colocar em fila quando recebe mais de um registro ao mesmo tempo para poder lidar com isso? outra situação. vamos supor que 5 desses usuários sejam fã de homem aranha e pensam em usar spiderman como nome de usuário. se o nome ainda não existe no banco de dados e todos clicaram ao mesmo tempo em confirmar, isso não geraria uma confusão no banco de dados?
bem caso não se possa chegar a uma conclusão quanto a isso como se resolveria tal fato? a princípio pensei em duas possíveis saídas. para o caso da id como auto increment pensei em trocar para um campo normal e usar o ip do usuário junto com a data e a hora do cadastro para formar a id. algo como 00025501120150309131427(255.000.011_2015-03-09_13-14-27). já para o caso de usuário pensei em validar em duas etapas. primeiro checa por php se já existe o usuário. se não existe cadastra. em seguida verifica os cadastros dos últimos 30 segundos por exemplo para ver se continua tendo só o que foi cadastrado para esse usuário ou se aparecem outros e aí toma outra decisão como por exemplo enviar uma mensagem para o usuário escolher outro nome e deixar o registro bloqueado até que o nome seja mudado e seja único.
o que vocês podem dizer sobre isso?
agradeço pela atenção.
Discussão (3)
Carregando comentários...