Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Очередность для mysql потоков (superstorm) 30/12/2009 - 18:27:18
      Re: Очередность для mysql потоков (bac) 30/12/2009 - 21:17:03
      Re: Очередность для mysql потоков (bac) 30/12/2009 - 21:19:05
      Re: Очередность для mysql потоков (superstorm) 03/01/2010 - 23:26:12
      Re: Очередность для mysql потоков (superstorm) 16/01/2010 - 18:11:28

> Original message text:
> From: superstorm - 30/12/2009 - 18:27:18
> Subject:Очередность для mysql потоков
> -----------------
> Подскажите, как можно нормально блокировать mysql потоки. То есть ставить очередность - пока один юзер не обработается, второго не пускать. Третьего в очереди пускать только после второго, и т.д.
>
> Проблема такая. Посетитель заходит на сайт, в этот момент выполняется пхп подпрограмма, которая собирает статистику, ещё кое-что делает, в общем неважно. Главное что в это время она активно работает с базой данных, обновляет некоторые записи, создаёт новые записи. И если в этот момент какой-то другой посетитель начинает обрабатываться - происходит проблема, т.к. для него берутся устаревшие данные.
>
> Вроде бы есть специально для таких случаев LOCK. Я так делал, в самом начале подпрограммы написал LOCK <те таблицы что обновляются> WRITE, ..., <те таблицы что не обновляются> READ.
> В конце подпрограммы написал UNLOCK TABLES.
>
> Но по-моему эти указания игнорируются. Либо для первого посетителя в очереди вроде бы срабатывают, но все последующие в очереди СРАЗУ же берут себе поток в тот момент как первый освобождает свой поток.
> То есть получается: 1 > 2 + 3 + 4 + ... вместо 1 > 2 > 3 > 4 > ...
> А может быть и вообще не работает, сложно сказать.
>
> Что тут может быть не так?
>


From: superstorm - 03/01/2010 - 23:26:12
Subject:Очередность для mysql потоков
-----------------
Да, про такую блокировку читал тоже, но в моем случае думаю это из пушки по воробьям. Возникнет путаница с именами, это всё надо дополнительно продумывать и т.д. Нецелесообразно по-моему.
Если бы это проблему решило - то да. Но что-то мне говорит, что я о чём-то не знаю просто.

Может есть какие-нить подводные камни или дополнительные функции, которые надо выполнять перед блокировкой. Вот например я читал что транзакции могут сбить блокировку. Что ещё? Информации нормальной по этому вопросу что-то совсем мало. Нигде ни о каких проблемах не пишут.

Я максимально упростил код, теперь между локом и анлоком буквально несколько строк, включая несколько запросов к базе:
один селект (с WHERE, ORDER BY и LIMIT) в массив, один mysql_result для простого селекта, инсерт. В общем обычные функции. Из пхп: обращение к $_SERVER, получение времени и математика. Выполняется всё это в заинклуженном файле.

Но не помогает. Может при создании таблицы надо какую-то спецификацию указывать? Или ещё что?


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36657



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |