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

Поведение на MySQL „избиране за актуализация“.

Позволете ми да прегледам вашите случаи и да обясня как работят тези ключалки:

1 случай

T1 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция поставя IX заключване на цялата таблица и X заключване на първите 5 реда.

T2 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция поставя IX (защото IX съвместим с IX) заключване на цялата таблица и се опитва да започне първите 5 реда, но не може да го направи, защото X не е съвместим с X

Значи сме добре.

2.1 корпус

T1 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция постави IX заключване на цялата таблица и X заключване на първите 5 реда.

T2 иска да избере някои редове от вашата тестова таблица. И не поставя никакви заключвания (тъй като InnoDB предоставя незаключващи четения)

2.1 корпус

T1 иска да актуализира някои редове във вашата тестова таблица. Тази транзакция постави IX заключване на цялата таблица и X заключване на първите 5 реда.

T2 иска да актуализира (избере за актуализиране) някои редове от вашата тестова таблица. Поставете IS върху цялата маса и се опита да получи S заключване на реда и не успява, защото X и S са несъвместими.

Също така винаги имайте предвид нивото на изолация:различно ниво причинява различен механизъм за освобождаване/придобиване на ключалки

Надявам се да помогне




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ГРЕШКА 1064 (42000) в MySQL

  2. Struts + Hibernate:@SessionTarget не работи

  3. Мигрирайте база данни от Postgres към MySQL

  4. RAW SQL заявка със Zend Framework

  5. Когато използвате SELECT, можете ли да промените стойността на върнато поле въз основа на други полета?