livelli di isolamento mysql
-
19-09-2019 - |
Domanda
Sono un po 'confuso dalla documentazione qui. Ho una transazione, che
- avviare la transazione
- fa alcuni aggiornamenti
- fa alcune seleziona
- fa alcune ulteriori aggiornamenti
- commit
Voglio che i miei seleziona al passo 3 per vedere i risultati di aggiornamenti in fase di 2 , ma voglio essere in grado di ripristinare il tutto.
leggi impegnato sembra implicare che seleziona mostrare solo i dati che è stato commesso, e lettura ripetibile sembra implicare che tutte le seleziona successivi vedranno gli stessi dati come esisteva al momento della prima selezionare - ignorando così i miei aggiornamenti. leggi uncommitted sembra di fare la cosa giusta, ma: "ma potrebbe essere usata una possibile versione precedente di una fila" - anche questo non è accettabile, come i miei seleziona deve vedere il risultato dei miei aggiornamenti.
serializable in realtà la mia unica speranza qui?
sto lavorando fuori la documentazione qui
Soluzione
i livelli di isolamento delle transazioni descrivono solo l'interazione tra concorrenti transazioni. Con qualsiasi livello di isolamento, roba che avete aggiornato all'interno della stessa transazione verrà aggiornato quando si ri-selezionare da tale operazione.
Il livello di isolamento a destra nel vostro caso sembra essere letto impegnata, in modo da poter rollback in qualsiasi momento e dati UNCOMMITED non è visibile in altre operazioni.