2012-03-20 11 views
7

La domanda è piuttosto semplice ma non sono riuscito a trovare una risposta precisa: In un myisam db, cosa succede se un file php blocca una tabella (con un'operazione atomica, ad esempio un INSERT) e un altro file php tenta di accedere al stessa tabella (lettura o scrittura)?Concorrenza Mysql: cosa succede se si accede a una tabella bloccata?

Ora, mentre è ovvio che la seconda sessione non sarà in grado di accedere alla tabella, cosa succede esattamente? Restituisce qualche tipo di errore? Aspetta in coda fino a quando non è in grado di accedervi?

risposta

6

Il secondo collegamento attenderà il blocco per liberare.

Con MyISAM qualsiasi scrittura (inserimento/aggiornamento/cancellazione) si blocca il tavolo,

Tuttavia con tavolo INNODB digitare l'operazione atomica si blocca solo le righe interessate

+0

perfette. C'è una specie di timeout per la seconda connessione? – PixelSapiens

+0

Qualunque timeout della connessione definito in mysql config OPPURE l'applicazione che stai usando (per esempio php.ini mysql timeout è 60 secondi). La connessione attenderà fino a questo momento, quindi rilascia (ovviamente) –

+0

Perfetto! Molte grazie! – PixelSapiens

Problemi correlati