InnoDB задава специфични типове заключвания, както следва.
-
SELECT ... FROM е последователно четене, четене на моментна снимка на базата данни и без заключване, освен ако нивото на изолация на транзакцията не е зададено на SERIALIZABLE. За ниво SERIALIZABLE търсенето задава споделени заключвания на следващия ключ на записите на индекса, които среща.
-
ИЗБЕРЕТЕ ... ОТ ... ЗАКЛЮЧВАНЕ В РЕЖИМ НА СПОДЕЛЯНЕ задава споделени заключвания на следващия ключ за всички записи на индекси, които среща търсенето.
-
За индексни записи, срещани при търсене, SELECT ... FROM ... FOR UPDATE блокира други сесии от извършване на SELECT ... FROM ... LOCK IN SHARE MODE или от четене в определени нива на изолация на транзакция. Последователните четения ще игнорират всички заключвания, зададени на записите, които съществуват в изгледа за четене.
-
UPDATE ... WHERE ... задава ексклузивно заключване на следващия клавиш за всеки запис, който търсенето среща.
-
DELETE FROM ... WHERE ... задава ексклузивно заключване на следващия клавиш за всеки запис, който търсенето среща.
-
INSERT задава изключително заключване на вмъкнатия ред. Това заключване е заключване на запис на индекс, а не заключване на следващ ключ (т.е. няма заключване на пропуск) и не пречи на други сесии да се вмъкнат в празнината преди вмъкнатия ред.
InnoDB има няколко типа заключвания на ниво запис:
-
Заключване на запис:Това е заключване на запис на индекс.
-
Заключване на празнина:Това е заключване на празнина между записите на индекс или заключване на празнина преди първия или след последния запис на индекс.
-
Заключване на следващия ключ:Това е комбинация от заключване на запис на индексния запис и заключване на празнина на празнината преди индексния запис.
Вижте повече :
Избягване на фантомния проблем с помощта на заключване със следващ ключ