sql >> Database >  >> RDS >> Mysql

mySQL - Tafelvergrendeling versus rijvergrendeling

Als u een index heeft op tblAreas.AreaID, dan is elke transactie die WHERE tblAreas.AreaID in (...) bevat zal de index voor die items vergrendelen. Het maakt niet uit of de rijen zelf bestaan ​​of niet. Die vergrendeling voorkomt dat een andere transactie gegevens voor die ID's invoegt. Dus ik denk niet dat je een van je suggesties hoeft te doen. Door gewoon te vragen of alle gebieden beschikbaar zijn voor uw territorium, krijgt u de sluizen die u nodig heeft om uw territorium atomair in te voegen.

Dit kan een beetje een probleem zijn, omdat je gebieds-ID's niet uniek zijn voor het hele spel, dus er kan een valse serialisatie zijn tussen gebieden met hetzelfde ID op verschillende kaarten. Het kan helpen om mapID toe te voegen aan uw tblAreas-tabel, zodat u in plaats daarvan een (mapID, areaID) index kunt maken om op te zoeken, wat valse botsingen op de index zou voorkomen. (Dat zou je schema denormaliseren, wat je om andere redenen misschien niet wilt doen.)




  1. Varchar naar nummerconversie voor sorteren

  2. Hoe kan ik een HTTP-verzoek indienen vanaf de SQL-server?

  3. PHP MySQL-vervolgkeuzelijst Vul geselecteerde waarde in

  4. Kolom bijwerken met null-waarde