sql >> Databasteknik >  >> RDS >> Mysql

mySQL - Tabelllåsning vs radlåsning

Om du har ett index på tblAreas.AreaID, då alla transaktioner som inkluderar WHERE tblAreas.AreaID in (...) kommer att låsa indexet för dessa poster. Det spelar ingen roll om raderna själva finns eller inte. Det låset kommer att förhindra en annan transaktion från att infoga några poster för dessa ID:n. Så jag tror inte att du behöver göra något av dina förslag. Bara genom att fråga för att se om alla områden är tillgängliga för ditt territorium får du de lås du behöver för att infoga ditt territorium atomärt.

Detta kan vara lite av ett problem eftersom dina områdes-ID:n inte är unika för hela spelet, så det kan förekomma falsk serialisering mellan områden med samma ID på olika kartor. Det kan hjälpa att lägga till mapID till din tblAreas-tabell så att du kan skapa ett (mapID, areaID) index att slå upp istället, vilket skulle undvika falska kollisioner på indexet. (Det skulle avnormalisera ditt schema, vilket du kanske inte vill göra av andra skäl.)




  1. Hur upprätthåller du revisionskontrollen över din databasstruktur?

  2. ASP.NET/Identity Error:Entitetstypen ApplicationUser är inte en del av modellen för det aktuella sammanhanget

  3. Mina favoritpostgreSQL-frågor och varför de är viktiga

  4. Kan inte ansluta till MySQL-serverfel 111