1 - Ao se tratar a atualização com perguntas do SQL, testa o impato de
INTRODUZIR O *** NO *** DA ATUALIZAÇÃO DUPLICADA DA CHAVE
cf
http://dev.mysql.com/doc/refman/5.0/fr/insert.html2 - Desde que você está segurando paralelamente $_SESSION e cópias do sql de dados de sessão, você pôde considerar armazenar a identificação do sql nos dados de $_SESSION
Quando você está fazendo o primeiro escreve a inserção?
Em alguns casos $_SESSION é atualizado somente depois que a página é deixada…
3 - Parece que você está jogando realmente em uma área perigosa onde o sincronismo preciso não seja garantido realmente e onde você deve conseqüentemente esperar lotes dos problemas.
Eu tentaria reconsiderar e atualizar dados de sessão somente em alguns eventos significativos, de modo que toda a pergunta psta em esconderijo do SQL tivesse algum tempo para executar. Seu sistema seria então mais robusto, e a carga no usuário igualmente deixaria cair significativamente.
Ou ter algum $_SESSION prender o timestamp da última atualização e actualizá-lo somente depois 2 segundos
Sure, não muito Ajax-como mas hey, isto depende de seu usuário do SQL e do esforço que você o põr sobre. Os microssegundos ou mesmo as atualizações do milli- ou dos centi-segundos são muito bem para Ajax, mas não para o usuário do SQL