sql >> Databasteknik >  >> RDS >> Mysql

VÄLJ FÖR UPPDATERING som håller hela tabellen i MySQL istället för rad för rad

Standardisoleringsnivån för InnoDB-tabeller är repeterbar läsning. När denna isoleringsnivå är aktiv får vi följande beteende (citat från:https://dev.mysql.com/doc/refman/5.5/en/set-transaction.html ):

Med andra ord:kan du försöka använda primärnyckeln i WHERE-villkoret för SELECT? Så till exempel istället för:

START TRANSACTION;
SELECT * FROM productMacAddress WHERE status='free' limit 8 FOR UPDATE;

Försök:

START TRANSACTION;
SELECT * FROM productMacAddress WHERE id=10 FOR UPDATE;

om id är den primära nyckeln. Alla andra kolumner med ett unikt index skulle också fungera. När du använder icke-unika kolumner i din WHERE-sats kommer InnoDB att låsa en rad rader.




  1. Välja mot delmängder av en lista i MySQL

  2. Använda Sysbench för att generera testdata för delad tabell i MySQL

  3. SQUARE() Exempel i SQL Server

  4. En datamodell för handel med aktier, fonder och kryptovalutor