powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокировка следующего ключа в InnoDB
1 сообщений из 1, страница 1 из 1
Блокировка следующего ключа в InnoDB
    #32549432
_Tiger_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, господа! Пожалуйста, осветите для меня одну проблему.

Есть такой пункт мануала "Блокировка следующего ключа: устранение проблемы с фантомом" ( http://dev.mysql.com/doc/mysql/ru/InnoDB_Next-key_locking.html ).

В нём в частности сказано:


SELECT * FROM CHILD WHERE ID > 100 FOR UPDATE;

Когда InnoDB сканирует индекс, то возможна также блокировка интервалов после последних записей в индексе. Именно это иллюстрируется в предыдущем примере: блокировка, установленная InnoDB, предотвратит вставку в таблицу, если ID будет больше 100.

Для меня остались неясными несколько моментов:
а) Обязательно ли должен быть индекс по столбцу ID? Если бы на месте ID стояло неиндексированное поле, то никакой блокировки бы не было?
б) Чтобы избежать проблемы с фантомом, нужно использовать только SELECT ... FOR UPDATE или можно также SELECT ... LOCK IN SHARE MODE?

И ещё вопрос по тому же разделу.
В мануале написано, что можно использовать блокировку следующего ключа для обеспечения уникальности значений в своей программе, то есть что можно блокировать "то, чего нет в таблице". Однако, я так и не понял до конца как это делается. Объясните, пожалуйста.

Спасибо.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокировка следующего ключа в InnoDB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]