2010-07-08 13 views

risposta

23

Il blocco non è una funzione di rotaie, è sufficiente aggiungere l'istruzione di blocco alla query, che varierà in base al database che si sta utilizzando. Il blocco pessimistico assume una visione "pessimistica" nel ritenere che ogni query sia soggetta a corruzione. Quindi bloccherà le righe selezionate finché non avrai finito la transazione . quindi Lock> query> unlock. Mentre questi sono database abbastanza consistenti per il database, potrebbe essere utile leggere la documentazione del database che si sta utilizzando per qualsiasi cosa specifica del database che si dovrebbe conoscere.

Ecco una buona discussione sul blocco ottimistico rispetto al pessimismo che lo spiega meglio di me. Optimistic vs. Pessimistic locking

+1

Grazie. Sto usando mySQL così ho cercato in quei documenti e si dice che il blocco viene rilasciato quando la transazione commette o rollback. Non so come funzioni al di fuori di una transazione. – user26270

+1

"Il blocco non è una funzione delle rotaie" - Il blocco ottimistico è, mentre il blocco pessimistico si basa sul supporto di basso livello del DB. – Felixyz

+0

Blocca l'intero database ??! – AjaxLeung

4

Sì, il blocco viene rilasciato automaticamente al termine della transazione poiché questo tipo di blocco è applicabile solo alle transazioni. Non ha senso bloccare il record in questo modo (blocco pessimistico) al di fuori della transazione.

I blocchi pessimistici sono applicati a livello di database.

seguito si riporta una descrizione di esempi per mysql: http://dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html

+1

Questo è corretto, non è la fine della query, ma la fine della * transazione *. Ho corretto la risposta alla confusione di prefetto. – lzap

Problemi correlati