MyISAM heeft verschillende soorten sloten. Een SELECT
operatie plaatst een LEES LOCK op de tafel. Er kunnen op elk moment meerdere actieve leesvergrendelingen zijn, zolang er geen actieve SCHRIJVERSLOTEN zijn . Bewerkingen die de tabel wijzigen, bijv. INSERT
, UPDATE
, DELETE
of ALTER TABLE
plaats een SCHRIJFSLUITING op de tafel. Schrijfvergrendeling kan alleen op een tafel worden geplaatst als er geen actieve leesvergrendelingen zijn; Als er actieve leesvergrendelingen zijn, zet MyISAM de schrijfvergrendeling in de wachtrij om te worden geactiveerd zodra alle actieve leesvergrendelingen zijn verlopen.
Evenzo, wanneer er een actieve schrijfvergrendeling is, zal een poging om een leesvergrendeling op een tafel te plaatsen de vergrendeling (en de bijbehorende query) in de wachtrij plaatsen totdat de schrijfvergrendelingen op de tafel zijn verlopen.
Uiteindelijk betekent dit allemaal dat:
- U kunt een willekeurig aantal actieve leesvergrendelingen hebben (ook wel gedeelde vergrendelingen genoemd)
- U kunt slechts één actieve schrijfvergrendeling hebben (ook wel een exclusieve vergrendeling genoemd)
Zie voor meer informatie:http://dev.mysql. com/doc/refman/5.5/en/internal-locking.html