powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
7 сообщений из 7, страница 1 из 1
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925208
Akoros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Есть задача - сделать для серверной части компьютерной игры турниры.
Турниры должны быть ограничены по времени, и по окончанию начинать следующий турнир сохраняя результаты участников.
Как сделано сейчас - есть event который каждую секунду опрашивает нет ли турниров, которые нужно закрыть. Если есть - вызывает хранимую процедуру закрытия турнира, в которой описаны все необходимые действия. Последним действием в хранимой процедуре закрытия турнира вызывается хранимая процедура начала нового турнира. Все это работает в целом нормально, но я хотел бы заблокировать все используемые таблицы на время всего комплекса действий, чтобы пользователям не ушли случайно некорректные данные.
Однако в хранимых процедурах нельзя использовать LOCK TABLES и UNLOCK TABLES. Как вы обходите эти ограничения? Используете что-то вместо хранимых процедур? Какие-то сторонние шедулеры?

Заранее благодарю.
...
Рейтинг: 0 / 0
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925250
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akorosзаблокировать все используемые таблицы на время всего комплекса действий, чтобы пользователям не ушли случайно некорректные данные.Вы явно делаете что-то не так, если такое понадобилось.
AkorosКак вы обходите эти ограничения?Мы на них не натыкаемся :)
AkorosКакие-то сторонние шедулеры?И встроенные, и внешние.

Сейчас пока сложно посоветовать что-то конкретное, т.к. непонятна связь между турнирами и таблицами.
...
Рейтинг: 0 / 0
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925330
Akoros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каждый турнир представлен записями в нескольких таблицах.

Скажем Tournaments, TournamentsMembers, TournamentsRewards, TournamentConditions для текущих турниров.
PastTournaments, PastMembers, PastRewards, PastConditions для прошедших.
В процедуре закрытия турнира копируются данные из таблиц текущих турниров в таблицы прошедших турниров, после чего ненужные записи из таблиц текущих турниров удаляются.

Перенос этих данных происходит последовательно. И может случиться ситуация, что посреди процесса придет новый результат от клиента - проверка обнаружит что нужный турнир есть (пока еще) и запишется, отправив на клиент сообщение что все ок. После чего и турнир и записи старых результатов будут удалены. Вот если бы можно было заблокировать таблицы на время работы процедур - клиенту бы пришло сообщение об ошибке, которое можно было бы нормально разобрать.


miksoftИ встроенные, и внешние.
А какие конкретно?
...
Рейтинг: 0 / 0
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925336
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkorosmiksoftИ встроенные, и внешние.
А какие конкретно?Внешние - обычный системный cron.
...
Рейтинг: 0 / 0
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925458
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akorosпроверка обнаружит что нужный турнир есть (пока еще)
Значит, начинать надо с удаления (или пометки как завершённый) записи в таблице турниров. А потом уже не спеша сносить все данные в архив.
...
Рейтинг: 0 / 0
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925524
Akoros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftAkorosпропущено...

А какие конкретно?Внешние - обычный системный cron.

Ясно, спасибо.
...
Рейтинг: 0 / 0
Как можно обойти запрет на LOCK TABLES в хранимых процедурах?
    #38925527
Akoros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaAkorosпроверка обнаружит что нужный турнир есть (пока еще)
Значит, начинать надо с удаления (или пометки как завершённый) записи в таблице турниров. А потом уже не спеша сносить все данные в архив.

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


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