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

MySQL 'vælg til opdatering'-adfærd

Lad mig gennemgå dine sager og forklare, hvordan disse låse fungerer:

1 sag

T1 ønsker at opdatere nogle rækker i din testtabel. Denne transaktion sætter IX-lås på alle borde og X-lås på de første 5 rækker.

T2 ønsker at opdatere nogle rækker i din testtabel. Denne transaktion sætter IX (fordi IX kompatibel med IX) lås på alle tabeller og forsøger at de første 5 rækker, men det kan ikke gøre det, fordi X ikke er kompatibel med X

Så vi har det godt.

2.1 sag

T1 ønsker at opdatere nogle rækker i din testtabel. Denne transaktion satte IX-lås på alle borde og X-lås på de første 5 rækker.

T2 ønsker at vælge nogle rækker fra din testtabel. Og den placerer ingen låse (fordi InnoDB leverer ikke-låsende læsninger)

2.1 sag

T1 ønsker at opdatere nogle rækker i din testtabel. Denne transaktion satte IX-lås på alle borde og X-lås på de første 5 rækker.

T2 ønsker at opdatere (vælg for opdatering) nogle rækker fra din testtabel. Placer IS på hele bordet og forsøger at få S-lås på rækken og mislykkes, fordi X og S er uforenelige.

Vær også altid opmærksom på isolationsniveauet:forskellige niveauer forårsager, at forskellige mekanismer frigør/erhverver låse

Håber det hjælper




  1. Vend denne vej z/y/x i Oracle til x/y/z

  2. Sammenligning af RDS vs EC2 til håndtering af MySQL eller MariaDB på AWS

  3. samtidig adgang til MySQL-database ved hjælp af lagret procedure

  4. LISTAGG i Oracle for at returnere forskellige værdier