sql >> Database teknologi >  >> RDS >> Mysql

mySQL - Bordlåsning vs rækkelåsning

Hvis du har et indeks på tblAreas.AreaID, så enhver transaktion, der inkluderer WHERE tblAreas.AreaID in (...) vil låse indekset for disse poster. Det er lige meget, om rækkerne selv eksisterer eller ej. Denne lås forhindrer en anden transaktion i at indsætte nogen poster for disse id'er. Så jeg tror ikke, du behøver at gøre nogen af ​​dine forslag. Bare du forespørger for at se, om alle områder er tilgængelige for dit territorium, vil give dig de låse, du har brug for til at indsætte dit territorium atomært.

Dette kan være lidt af et problem, da dine område-id'er ikke er unikke for hele spillet, så der kan være en vis falsk serialisering mellem områder med det samme ID på forskellige kort. Det kan måske hjælpe at tilføje mapID til din tblAreas-tabel, så du kan lave et (mapID, areaID) indeks til at slå op i stedet for, hvilket ville undgå falske kollisioner på indekset. (Det ville denormalisere dit skema, hvilket du måske ikke ønsker at gøre af andre årsager.)




  1. Microsoft Access Tips og tricks Del 2 – Formularer

  2. Hvordan sikkerhedskopierer og gendanner man en database som en kopi på den samme server?

  3. Sådan sikkerhedskopieres gemte procedurer i MySQL

  4. konvertere klat til klat