Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> myisam и паралельные запросы, неужели дело в отсутсвии транзакций 
:(
    Опции темы
passer
Дата 19.10.2010, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.4.2007

Репутация: нет
Всего: нет



у меня есть проблема. два не связанный процесса имеюший отдельный коннекшины к серверу mysql. у обоих включено autocommit. каждый процесс запускает по одному update(возможно одновременно). запросы описаны ниже. я думал поле ch_status(и условие now()-ch_status>300) должно было обеспечить чтобы эти два запроса могли проапдейтить одну и ту же строку только если запустить один запрос на 3 минуты позже второго. но в логах отчетливо увидел как с периодом 10 секунд эти запросы обновили одну и ту же строку. как это возможно? 
таблицы myisam. возможно ли что один запрос не увидел изменения другого?это ведь не правильно? 

вот запросы 

update table set status=1,ch_status=now() where 
ins_time<now() and 
now()-ch_status>300 and 
status!=1 
order by ch_status limit 1 


update table set status=2,ch_status=now() where 
ins_time<now() and 
now()-ch_status>300 and 
status!=1 
order by ch_status limit 1



зарание спасибо за ответы. 
PM MAIL   Вверх
Akina
Дата 19.10.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



А какой смысл вообще кивать на autocommit на MyISAM, если она non-transactional? autocommit просто игнорируется. А rollback-попытка выдаст warning, ибо нету.

Цитата(passer @  19.10.2010,  16:13 Найти цитируемый пост)
в логах отчетливо увидел как с периодом 10 секунд эти запросы обновили одну и ту же строку

в каком порядке? каково было значение использованных в запросах полей записи до и после?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 19.10.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(passer @  19.10.2010,  15:13 Найти цитируемый пост)
now()-ch_status>300 

я правильно понимаю что now в этом случае возвращает число в формате YYYYDDMMHHmmSS?
Если да, подумай что происходит когда перескакиваем через час. Например 10:59:59-11:00:00
110000-105959=4041, а прошла всего секунда

Это сообщение отредактировал(а) Zloxa - 19.10.2010, 17:08


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 19.10.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Zloxa @  19.10.2010,  18:07 Найти цитируемый пост)
я правильно понимаю что now в этом случае возвращает число в формате YYYYDDMMHHmmSS?

Угу... причём это время начала обработки запроса - вне зависимости от того, сколько он будет выполняться.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
passer
Дата 19.10.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.4.2007

Репутация: нет
Всего: нет



блин. вы правы. 

я подумал об этом но я подумал про проскакивание через минуту и решил что за секунду пройдет 40 секунд. это причину не обьяснило.. 

спасибо огромное за помшь.  буду юзать timediff(или как его там звали)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0748 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.