Новости
Документация
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

> Original message text:
> 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
>
>


From: Dinky - 15/06/2006 - 19:16:51
Subject:Помогите решить задачку
-----------------
угу, лучше блокировать одну запись по primary key, иначе innodb может кучу соседних заблокировать на всякий случай ;)

--
Dmitry



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

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

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



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