Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как залочить правильно таблицу read/write ?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Такая ситуация : Когда ко мне приходит запрос, я проверяю если похожие запросы уже были, если нет - записываю строку в таблицу , если да - ничего не делаю. Дело в том, что ко мне приходят два одинаковых запроса в один момент. Первый скрипт запускается, ищет в таблице запись - видит что её нет, добавляет запись. Второй скрипт запускается, первый не успевает ещё добавить строку, селект во твором скрипте ничего не возвращает, в итоге у меня появляется ещё одна запись. Я пытался в начале транзакции добавить LOCK TABLES table_name WRITE, и в конце UNLOCK TABLES, но у меня лочатся в итоге вообще все таблицы, соответственно запросы никак не логируются. Как правильно залочить таблицу, чтобы второй скрипт ждал пока первый прочитает/запишет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 13:16 |
|
||
|
Как залочить правильно таблицу read/write ?
|
|||
|---|---|---|---|
|
#18+
alexlucas007Я пытался в начале транзакции добавить LOCK TABLES table_name WRITE, и в конце UNLOCK TABLES, но у меня лочатся в итоге вообще все таблицы Вы определитесь. Либо Вы организуете указанный набор операций в рамках транзакции - тогда Вам никакие локи не требуются, но нужно правильно выбрать/настроить уровень изоляции. Либо Вы никаких транзакций не организуете - вот тогда действительно нужно блокировать таблицу. Но учтите, что второй процесс в этом случае будет давать ошибку, в то время как в первом варианте - ожидать окончания первой транзакции, чтобы заблокировать ресурсы для второй (ну или резанётся по тайм-ауту). Но ещё разумнее просто безусловно добавлять. Но структура таблицы должна содержать уникальный индекс по выражению, по которому Вы собственно проверяете необходимость добавления записи. Тогда при наличии записи будет отказ во вставке по причине нарушения уникальности, и запись не добавится - собственно желаемый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2017, 15:05 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=82&tid=1830997]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 364ms |

| 0 / 0 |
