- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
допустим есть таблица
id| data
----------
0 | qwe
1 | asd
2 | zxc
...
можно ли средствоми sql отдавать данные по порядку при множестве параллельных
запросов?
притом надо чтобы одна строка была выдана только 1 раз
подскажите пару ключевых слов по которым лучше погуглить
ИМХО без блокировки - никак.
Но ты опиши задачу подробнее, может найдём выход.
а я ничего не понял, что хочется.
1) по какому порядку?
2) что значит только один раз? Откуда возьмется второй раз?
3) что значит sql? mysql? mssql? firebirdSQL? postresql?
4) и причем тут вообще блокировка? И блокировка чего?
Скорее всего имеется ввиду концепция "очередь заданий для множества паралельных обработчиков". Типичная схема работы парсера.
Если задания выполняются паралельно и они быстро заканчиваются, то неплохо бы обойтись без блокировки. Каждый обработчик может пометить свое задание через UPDATE и работать с ним.
Делайте так :
каждый обработчик имеет свой уникальный идентификатор (очевиднее всего взять PID процесса или потока).
update queue1 set state=1,worker_id=$pid where state=0 .. order by .. limit 1;
select * from queue1 where worker_id=$pid and state=1 limit 1;
есть некоторые тонкости - изоляция транзакций, оно вам может подпортить жизнь и придется это изучать,
но в Дефолтной СУБД(mysql) с Дефолтным Движком (myisam) все будет хорошо.
а я ничего не понял, что хочется.
1) по какому порядку?
2) что значит только один раз? Откуда возьмется второй раз?
3) что значит sql? mysql? mssql? firebirdSQL? postresql?
4) и причем тут вообще блокировка? И блокировка чего?
прошу прощения, возможно я чего-то сам не понимаю
1)порядок определяется по полю id
2)если есть несколько параллельных запросов то не должно случиться так, что
одна строка таблицы была бы выдана нескольким клиентам
3)допустим постгрес или mysql.
4)блокировка таблицы на время обработки каждого запроса
чтобы не допускать образования очередей ожидания пока это позволяет железо
приоритет выдачи одной записи только 1 раз и времени отклика выше чем приоритет отдачи записей по порядку
то есть порядком можно и пожертвовать, но в любом случае не должно остаться не отданных записей.
как-то так.
andrey57 добавил 01.06.2009 в 00:56
netwind,
спасибо