01.08.2009, 18:39 | #21 | |
шайтанама
|
Цитата:
Легко хлипкость устраняется. Если поставить условие, что в один момент времени один обработчик может захавать одну строчку. Тогда обработчик, на очередном этапе цикла, делает UPDATE SET столбец=айди WHERE столбец=0 LIMIT 1 И забирает себе одну строку. После обработки он айди снимает. Даже если их будет сотня они не подерутся.
__________________
МордоКнига |
|
01.08.2009, 23:15 | #22 |
Мне повезёт!
Регистрация: 05.05.2007
Сообщений: 1,076
Вес репутации: 276
|
shadx, уху. И я про то же еще несколькими постами выше написал.
UPDATE конфликтовать не будут даже если их тысяча придет ровно в один момент. А селект уже не важно будет идти сразу или не сразу после апдейта, ибо строчка уже зарезервирована и ее никто не тронет. В общем, советую сделать эскизный проект: 1) берется база данных, в ней такой столбец. 2) Забивается миллионом любых строк 3) В программе создается 100 потоков и они одновременно резервируют себе по строке. 4) Смотрите что получилось. Быстренько накидать такую прогу - примерно 10-20 минут надо. Зато сразу все вопросы отпадут. И нам расскажете, как оно Эскизные проекты рулят: времени тратится меньше часа, позволяет оценить точно и четко масштаб проблемы и потом времени и нервов экономится просто несказанно много. И исполнителю хорошо: зная заранее о том, сколько потребуется сил на реализацию чего-то можно грамотней распланировать свой график. И заказчик всегда доволен: все любят, когда прогнозы по срокам сбываются.
__________________
If it's not great, it's not the end. |
02.08.2009, 00:25 | #23 |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 368
|
|
02.08.2009, 07:06 | #24 | |
Специалист
Регистрация: 19.01.2009
Адрес: вебмастеринг
Сообщений: 386
Вес репутации: 199
|
Цитата:
Такое не сложно реализовать и на Delphi, или Вы хотите сказать у Вас операционная система все по очереди делает? http://yandex.ru/yandsearch?text=ass...fx3&clid=46510
__________________
|
|
02.08.2009, 11:07 | #25 | |||
Магистр
Регистрация: 04.12.2007
Сообщений: 3,680
Вес репутации: 416
|
Цитата:
Ага. Спасибо. Мысль ясна и изящна. Вкурю её. Цитата:
Вопрос тут один- а как обработчик узнает id той строки, на которую он только что выставил флаг? Наверное это просто- но я туплю. Если это так- тоесть если есть возможность узнавать id строчки на которую выпал выбор субд при выполнении апдейта с учетом того что в секции where не стоит этого самого id строки- то получается, что это самый простой способ. Это и децентрализованно, и нет проблемы отслеживания смерти обработчиков, регистрации обработчиков в диспетчере и самого диспетчера Цитата:
__________________
Последний раз редактировалось Йода; 02.08.2009 в 11:08. Причина: Добавлено сообщение |
|||
02.08.2009, 12:23 | #26 | |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
|
Йода
Цитата:
UPDATE SET столбец=айди WHERE столбец=0 LIMIT 10 Потом селектом считывайте все, что заблокировалось этим обработчиком: SELECT * FROM ... WHERE столбец=айди и далее обработчик пусть обрабатывает эти строки. |
|
02.08.2009, 12:46 | #27 |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 368
|
время на ЦП делится не по каждой простой процессорной команде, а по блокам команд, отсюда вывод такой. в любом случае демон mysql работает 1 потоком на исполнение запросов.
я немного наврал про 100 процессоров. 1 демон mysql, 1 поток на исполнение запросов SQL, а вот попасть они могут в него в любом порядке, поэтому вариант с перетасовкой слияния подойдет |
02.08.2009, 20:50 | #28 | |
Мне повезёт!
Регистрация: 05.05.2007
Сообщений: 1,076
Вес репутации: 276
|
Цитата:
__________________
If it's not great, it's not the end. |
|
02.08.2009, 21:26 | #29 |
шайтанама
|
Вообсчем, тут пробовать надо Но в любом случае ничего особо сложного нету ...
__________________
МордоКнига |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите решить проблему . | Jenya | Курилка | 7 | 04.01.2009 11:27 |
Помогите решить проблему с MSN | Chervechok | Курилка | 2 | 12.12.2008 02:26 |
Помогите решить проблему! | yan21 | Яндекс | 3 | 20.11.2008 13:08 |
помогите решить проблему | ncx | Курилка | 24 | 04.08.2008 20:01 |
Помогите решить проблемы | ara | Вопросы по работе системы | 5 | 30.04.2007 22:45 |
Часовой пояс GMT +3, время: 23:35.