The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"SELECT FOR UPDATE на NDB"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"SELECT FOR UPDATE на NDB"  
Сообщение от Dip on 03-Авг-07, 14:59 
mysql 2.0.27, кластер, хранилище NDB.

Решил проверить, работает ли SELECT FOR UPDATE.

Подключаюсь к БД с двух консолек, в одной делаю:
SELECT * FROM table FOR UPDATE;
По идее это должно залочить все выбранные строки до последующего UPDATE с этого же соединения.
В другой делаю:
SELECT * FROM table;
И вижу содержимое таблицы.

Вопрос: это я туплю или в mysql опять сделали интерфейс, а реализацию еще не успели?

А вообще задача такая: надо сделать так, чтобы клиенты не могли одновременно выбрать с помощью SELECT одни и те же данные. Т.е. клиент выбирает строку, обрабатывает ее и делает ей UPDATE. И чтоб при этом они не кидались одновременно на одну и ту же строку. Может есть другой путь помимо SELECT FOR UPDATE? Построчная блокировка не устраивает, так как SELECT на самом деле выбирает несколько строк и блокировать их вручную слишком медленно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "SELECT FOR UPDATE на NDB"  
Сообщение от perece on 03-Авг-07, 17:46 
>Подключаюсь к БД с двух консолек, в одной делаю:
>SELECT * FROM table FOR UPDATE;
>По идее это должно залочить все выбранные строки до последующего UPDATE с
>этого же соединения.
>В другой делаю:
>SELECT * FROM table;
>И вижу содержимое таблицы.

а разве SELECT FOR UPDATE должен блокировать возможность селектить? или все-таки он блокирует возможность АПДЕЙТИТЬ?!

\^P^/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "SELECT FOR UPDATE на NDB"  
Сообщение от Dip on 04-Авг-07, 01:02 
>а разве SELECT FOR UPDATE должен блокировать возможность селектить? или все-таки он
>блокирует возможность АПДЕЙТИТЬ?!

Я так понял, что он блокирует строку для записи (lock for write), т.е. не дает ни читать, ни писать из другого потока, пока вызвавший его поток не завершит транзакцию.
Я чего-то не понял?

P.S. Объясните пожалуйста разницу между SELECT ... FOR UPDATE и SELECT ... LOCK IN SHARE MODE. В мануале ничего не понял :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "SELECT FOR UPDATE на NDB"  
Сообщение от Dip on 04-Авг-07, 02:07 
Тут еще в процессе возник вопрос. Кто-нибудь знает, хранимые процедуры выполняются атомарно или нет? А то может блокировки вообще не нужны, просто нужные запросы упаковать в процедуру?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "SELECT FOR UPDATE на NDB"  
Сообщение от tux2002 email on 13-Авг-07, 14:54 
>[оверквотинг удален]
>Вопрос: это я туплю или в mysql опять сделали интерфейс, а реализацию
>еще не успели?
>
>А вообще задача такая: надо сделать так, чтобы клиенты не могли одновременно
>выбрать с помощью SELECT одни и те же данные. Т.е. клиент
>выбирает строку, обрабатывает ее и делает ей UPDATE. И чтоб при
>этом они не кидались одновременно на одну и ту же строку.
>Может есть другой путь помимо SELECT FOR UPDATE? Построчная блокировка не
>устраивает, так как SELECT на самом деле выбирает несколько строк и
>блокировать их вручную слишком медленно.

select for update блокирует другой select for update если данные пересекаются, ну и конечно блокирует update и delete этих строк

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру