Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Конкуренция за запись при UPDATE + SELECT / 3 сообщений из 3, страница 1 из 1
26.03.2014, 11:30:32
    #38596704
senyOr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкуренция за запись при UPDATE + SELECT
Коллеги, добрый день!

В начале пример (просто пример, для понимания того, что происходит в базе и почему):
Клиент:
Предположим, что есть некий ресурс, который продает билеты в кино. При этом ресурс предлагает просто КУПИТЬ билет на сеанс, не предлагая при этом, например, место! Всего 20-ть билетов. И вот, появилась толпа тех, кто хотел бы купить билет и практически в одно время нажимают кнопку "КУПИТЬ". Толпа допустим состоит из 50-ти юзеров. И надо понимать, что они нажали кнопку в одно время.
Сервер:
При этом на базе, инициализируется алгоритм, который делает UPDATE первой попавшейся записи, у которой booked=0 (т.е. букает запись), проставляя ей признак booked = 1.
Теперь мы понимаем, что записей было 20-ть, а юзеров 50 и все происходит в один момент.

Справится ли с этой работой MySQL?
Какие могут быть блокировки или другие варианты неблагополучные, которые могут базу подвесить?
И как сделать правильно UPDATE, чтобы измежать возможных проблем.


Если проще, то есть например такой SQL:

update ticket_table
set booked=1
where id_ticket = (select id_ticket from ticket_table where booked = 0 and rownum =1)
...
Рейтинг: 0 / 0
26.03.2014, 13:32:17
    #38596878
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкуренция за запись при UPDATE + SELECT
senyOrесть например такой SQL:Это проблемы в полный рост.
RTFM "SELECT ... FOR UPDATE"
...
Рейтинг: 0 / 0
26.03.2014, 16:23:11
    #38597156
Dflz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конкуренция за запись при UPDATE + SELECT
одновременно нажать могут, но одновременно получить доступ к данным никогда.
даже при многопотоковости доступ по очереди.
главное учить матчасть.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Конкуренция за запись при UPDATE + SELECT / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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