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

Blocco esclusivo MySQL

Sì, stai bloccando tutte le righe della tabella quando hai una condizione su una colonna non indicizzata come user_id .

I blocchi si applicano a tutte le righe "esaminate". La tua condizione WHERE user_id = <user_id> deve esaminare tutti le righe nella tabella e testale una per una per vedere se corrispondono al valore di <user_id> .

Entrambe le query stanno esaminando l'intero set di righe, anche se stanno cercando diversi valori specifici di <user_id> , quindi sono in conflitto.

Se avevi un indice su user_id colonna, quindi MySQL utilizzerà quell'indice per trovare prima le righe corrispondenti, quindi solo le righe corrispondenti diventerebbero righe esaminate e quindi sarebbero bloccate.

Questo non ha nulla a che fare con il livello di isolamento della transazione. Questi tipi di blocchi si verificano in tutti i livelli di isolamento delle transazioni.