Mysql
 sql >> Database >  >> RDS >> Mysql

Come prevenire la rottura di determinate righe_trovate in condizioni di gara?

Ci sono alcuni problemi quando si tratta di transazioni e diversi livelli di isolamento ne impediscono più o meno. L'ho descritto nella mia risposta qui .
Un problema come la lettura fantasma, ad esempio, può influenzare il risultato di una selezione come se lo stessi facendo, sì. Ma il risultato di SQL_CALC_FOUND_ROWS viene archiviato non appena termina la query e viene perso non appena si esegue un'altra query nella stessa sessione. Questa è la parte importante. SQL_CALC_FOUND_ROWS è limitato alla sessione . Non è possibile che il risultato di un'altra query in un'altra sessione venga archiviato nella sessione corrente. L'uso di SQL_CALC_FOUND_ROWS non è soggetto a condizioni di gara. Il risultato della query SELECT, sì, ma non il risultato di FOUND_ROWS(). Non confondere questo.