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




MySQL.RU - Webboard



Вернуться
Помогите решить задачку (K) 15/06/2006 - 00:17:05
      Re: Помогите решить задачку (K) 15/06/2006 - 00:33:24
      Re: Помогите решить задачку (Dinky) 15/06/2006 - 19:16:51
      Re: Помогите решить задачку (K) 16/06/2006 - 17:59:43
      Re: Помогите решить задачку (Dinky) 16/06/2006 - 20:16:23



From: K - 15/06/2006 - 00:17:05
Subject:Помогите решить задачку
-----------------
Может для кого-то это окажется просто -)

Предполагается сделать следующее
В таблице InnoDB table1 есть некоторые данные, в том числе - имена других таблиц MyISAM
Нужно рэндомно выбрать из неё другие таблицы по некоторым критериям
Обработать их, и обновить данные в общей таблице table1
При этом пока один поток работает с выбранной таблицой из таблицы table1, другой не должен с ней работать


Можно ли организовать выборку следующим образом, чтобы это не привело к взаимоблокировкам

SELECT nametable FROM table1 WHERE n<12 AND n>6 ORDER BY RAND LIMIT 100 FOR UPDATE;
цикл 0-99
{
работа с таблицой nametable - несколько секунд, в другом участке кода с ней может работать другой, но не здесь
UPDATE table1 SET ... WHERE ...;
}

или как это можно организовать быстрее?

на данный момент table1- MYISAm, сначала выбираются все записи с table1 по заданным критериям
потом рэндомно (rand()) выбирается таблица из этого списка, попытка блокировать ее на уровне приложения GET_LOCK
только вот работает это медленно, вчастности из-за того, что несколько потоков попадают рэндомно на одни значения
рэндом нужен чтобы распределить нагрузку, т.е. многопотоковая обработка

хочется возложить эту рэндомную работу на MySQL



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

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

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



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