|
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,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
28767
|
|