Mysql
 sql >> база данни >  >> RDS >> Mysql

mySQL - Заключване на таблица срещу заключване на ред

Ако имате индекс на tblAreas.AreaID, тогава всяка транзакция, която включва WHERE tblAreas.AreaID in (...) ще заключи индекса за тези записи. Няма значение дали самите редове съществуват или не. Това заключване ще попречи на друга транзакция да вмъкне записи за тези идентификатори. Така че не мисля, че трябва да правите нито едно от вашите предложения. Само запитване, за да видите дали всички области са налични за вашата територия, ще ви осигури ключалките, които са ви необходими, за да вмъкнете територията си атомно.

Това може да е малък проблем, тъй като идентификаторите на вашите зони не са уникални за цялата игра, така че може да има някаква фалшива сериализация между области със същия идентификатор в различни карти. Може да ви помогне да добавите mapID към вашата таблица tblAreas, за да можете да направите индекс (mapID, areaID), който да търсите вместо това, което ще избегне фалшиви колизии в индекса. (Това би денормализирало вашата схема, което може да не искате да правите по други причини.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 'max_user_connections' е зададен на 200 - все още получава грешка

  2. Как да стартирате, рестартирате, проверявате състоянието и спирате MySQL сървъра

  3. Може ли външният ключ да действа като първичен ключ?

  4. Проверка на заявката за вмъкване дали съществува запис - Ако не, вмъкнете го

  5. групирайте по първо и последно появяване