Galerinha,
Estou aqui quase saindo do trabalho, há 1 dia da entrega do sistema para o cliente, e a aplicação para de funcionar completamente. :shock:
Como perdigueiro sai desesperadamente atrás do problema, quando me deparo com a seguinte situação:
Tenho uma maldita tabela no BD rodando em ORACLE onde existe uma chave primáira composta, acontece que um dos campos dessa chave é sequêncial. EX.
Chave Composta
campo1 campo2
10 1
10 2
10 3
11 1
11 2
11 3
Essa tabela é a principal tabela do sistema.
Acontece que para o sequênciamento estava sendo feito um SELECT MAX no campo e somando 1 :evil:
Agora imaginem, 3000 acessos silmultâneos fazendo este select + 1, e retornado o mesmo valor, visto que isso não garante um lock na tabela.
Oque ocorre, aplicação condenada :roll:
Surgiram algumas idéias, mas nada que resultasse numa solução viável ao momento, então resolvi recorrer a esse poço de talentos para que alguma alma me de alguma sugestão ou pelo um ombro amigo pra chorar
E para os que pensaram em trigger, e storeProcedures, definitivamente fora de questão por exigências do cliente. :roll:
O sistema incrivelmente já está em produção na sua versão 1(não imagino como) e este é uma versão dois deste mesmo sistema(meu pai eterno), portanto, sem mudanças radicais ou vai mais um boooom tempo de refactoring.
idéias? :idea: :idea: :idea: