powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как залочить правильно таблицу read/write ?
2 сообщений из 2, страница 1 из 1
Как залочить правильно таблицу read/write ?
    #39385384
alexlucas007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Такая ситуация :
Когда ко мне приходит запрос, я проверяю если похожие запросы уже были, если нет - записываю строку в таблицу , если да - ничего не делаю.
Дело в том, что ко мне приходят два одинаковых запроса в один момент.
Первый скрипт запускается, ищет в таблице запись - видит что её нет, добавляет запись.
Второй скрипт запускается, первый не успевает ещё добавить строку, селект во твором скрипте ничего не возвращает, в итоге у меня появляется ещё одна запись.

Я пытался в начале транзакции добавить LOCK TABLES table_name WRITE, и в конце UNLOCK TABLES, но у меня лочатся в итоге вообще все таблицы, соответственно запросы никак не логируются.

Как правильно залочить таблицу, чтобы второй скрипт ждал пока первый прочитает/запишет ?
...
Рейтинг: 0 / 0
Как залочить правильно таблицу read/write ?
    #39385470
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexlucas007Я пытался в начале транзакции добавить LOCK TABLES table_name WRITE, и в конце UNLOCK TABLES, но у меня лочатся в итоге вообще все таблицы
Вы определитесь.
Либо Вы организуете указанный набор операций в рамках транзакции - тогда Вам никакие локи не требуются, но нужно правильно выбрать/настроить уровень изоляции.
Либо Вы никаких транзакций не организуете - вот тогда действительно нужно блокировать таблицу. Но учтите, что второй процесс в этом случае будет давать ошибку, в то время как в первом варианте - ожидать окончания первой транзакции, чтобы заблокировать ресурсы для второй (ну или резанётся по тайм-ауту).

Но ещё разумнее просто безусловно добавлять. Но структура таблицы должна содержать уникальный индекс по выражению, по которому Вы собственно проверяете необходимость добавления записи. Тогда при наличии записи будет отказ во вставке по причине нарушения уникальности, и запись не добавится - собственно желаемый результат.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как залочить правильно таблицу read/write ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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