2013-04-24 4 views
1

Если один пользователь читает/записывает в определенную строку таблицы.Блокировка и блокировка строки таблицы в mysql (Inno Db)

В то же время, если другой пользователь приходит к чтению/записи этой конкретной строки. то он не сможет сделать этот процесс.

Как только первый пользователь выпустит эту строку, тогда только второй пользователь сможет получить к ней доступ.

Как я могу реализовать его в mysql?

я могу использовать блокировки & разблокировку таблицу, но она будет явно блокировать всю таблицу

Есть ли другое решение, так что ряд мудрого замок можно?

+0

настроенной MySQL к 'innodb'. Он обеспечивает блокировку уровня строки. –

+0

@YogeshSuthar Спасибо за комментарий. Итак, вы говорите, что если мы используем innodb, то блокировка уровня строки происходит внутри, и нам не нужно ее реализовывать? –

+0

Да ............. –

ответ

1

MySQL MyISAM поддерживает table-level locking. Изменение на InnoDB engine for row-level locking

Тип блокировки подразумевается самой базой данных. Вам не нужно ничего делать, чтобы принудительно блокировать блокировку на уровне строк или блокировку уровня таблицы.

MySQL использует блокировку на уровне строк для таблиц InnoDB для поддержки одновременного доступа записи с помощью нескольких сеансов, что делает их пригодными для многопользовательских, высоко одновременно, и OLTP приложений. MySQL использует блокировку на уровне таблицы для таблиц MyISAM, MEMORY и MERGE, позволяя только один сеанс для обновления этих таблиц за раз, делая их более подходящими для использования только для чтения, для чтения или для однопользовательских приложений.

Это называется Internal Locking, где запирание осуществляется в пределах сервера MySQL

Подробнее о двигателе how to lock a row for read

+0

Спасибо за комментарий. В настоящее время iam использует inno Db. Итак, вы говорите, что если мы используем innodb, то блокировка уровня строки происходит внутри, и нам не нужно ничего им реализовывать? –

+0

да, вам не нужно ничего внедрять! – Vimalnath

+0

Хорошо, моя ситуация, в то время как один пользователь читает строку, тогда другой пользователь не сможет прочитать эту запись. Возможно ли, чтобы innodb был автоматически? Я прочитал блокировку уровня строки во время записи или удаления записи –