Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Блокировка следующего ключа в InnoDB (Tiger) 28/05/2004 - 23:15:11
      Re: Блокировка следующего ключа в InnoDB (Marat_L) 31/05/2004 - 08:25:54
      Re: Блокировка следующего ключа в InnoDB (Tiger) 31/05/2004 - 16:24:31
      Re: Блокировка следующего ключа в InnoDB (Marat_L) 31/05/2004 - 17:07:09
      Re: Блокировка следующего ключа в InnoDB (Tiger) 01/06/2004 - 06:10:23
      Re: Блокировка следующего ключа в InnoDB (Tiger) 01/06/2004 - 06:12:10
      Re: Блокировка следующего ключа в InnoDB (Marat_L) 01/06/2004 - 08:52:35

> Original message text:
> From: Tiger - 28/05/2004 - 23:15:11
> Subject:Блокировка следующего ключа в InnoDB
> -----------------
> Добрый день, господа! Пожалуйста, осветите для меня одну проблему.
>
> Есть такой пункт мануала "Блокировка следующего ключа: устранение проблемы с фантомом" (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?
>
> И ещё вопрос по тому же разделу.
> В мануале написано, что можно использовать блокировку следующего ключа для обеспечения уникальности значений в своей программе. Но я так и не понял до конца как. Объясните, пожалуйста.
>
> Спасибо.
>
>


From: Marat_L - 31/05/2004 - 08:25:54
Subject:Блокировка следующего ключа в InnoDB
-----------------
1) На самом деле InnoBD блокирует все, что перебирает вручную.
Если не ставить индекс - он будет блокировать ВСЮ ТАБЛИЦУ, независимо от соответствия условию. Если будет индекс, то перебор записей будет ненужным, и блокировка будет происходить, как и написано.

Так что лучше ставь индексы :)

2)Если есть опасение, что другая транзакция произведет вставку во время этой транзакции - LOCK IN SHARE MODE



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
15217



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |