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

Изключително заключване на MySQL

Да, заключвате всички редове в таблицата, когато имате условие за неиндексирана колона като user_id .

Ключалките се прилагат за всички "изследвани" редове. Вашето условие WHERE user_id = <user_id> трябва да разгледа всички редовете в таблицата и ги тествайте един по един, за да видите дали съвпадат със стойността на <user_id> .

И двете заявки изследват целия набор от редове, въпреки че търсят различни специфични стойности на <user_id> , така че те са в конфликт.

Ако сте имали индекс на user_id колона, тогава MySQL ще използва този индекс, за да намери първо съвпадащите редове, след което само съвпадащите редове ще станат проверени редове и следователно ще бъдат заключени.

Това няма нищо общо с нивото на изолация на транзакциите. Тези видове заключвания се срещат във всички нива на изолация на транзакциите.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL срещу MongoDB

  2. MySql разлика между две времеви марки в дни?

  3. Как мога да отстраня грешките защо най-простата MySQL заявка връща false?

  4. Не мога да накарам mysql-connector-python да се инсталира във virtualenv

  5. Грешка при инсталиране на mysqlclient за python на Ubuntu 18.04