sql >> Database >  >> RDS >> Mysql

myisam table-lock op tafel plaatsen, zelfs als het om een ​​'select'-query gaat?

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



  1. PHP MYSQL PDO SUM van kolommen

  2. ORA-12154 kan de opgegeven verbindings-ID niet oplossen

  3. Selecteer een datum uit mijn database zonder seconden met PHP MySql

  4. Hoe te ontsnappen aan het vraagteken (?) -teken met Spring JpaRepository