
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.12.2004, 15:57
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Есть таблица, из которой на обработку несколько параллельно скриптов берут информацию. Для того чтобы скрипты не обрабатывали одни и теже данные на. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Можно-ли как либо уместить эту конструкцию в одном запросе. Или использовать другой алгоритм поскольку этот не устраивает по скорости. При этом желательно не использовать LOCK дабы скрипты не выстраивались в очередь. Заранее признателен за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2004, 16:23
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Зачем делать сложно, когда можно просто? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2004, 16:55
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Да, я думал об этом. Но как я смогу выбрать точно те данные которые проапдейтил, NOW() ведь измениться (запрос длиться > 1 секунды). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.12.2004, 08:28
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Дык ты же все равно выбираешь с вычитанием 10 дней. Из-за одной секунды ничего не произойдет. Или ты еще где-то выбираешь? Жизнь коротка - потерпи немного :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.12.2004, 11:04
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Да, там идёт сбор инфы. A поскольку её очень много и собрать её надо в минимальное время, задержки на выборку очень большие (на сетевые соеденения => загрузка процессора от 100 потоков ~10%) я запускаю огромное количество потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.12.2004, 11:25
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Ну если NOW() может отстать на секунду - ну сделай диапазон Или я не понял :) Жизнь коротка - потерпи немного :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.12.2004, 12:39
|
|||
|---|---|---|---|
|
|||
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
Немного переформулирую постановку вопроса: Ситуация: Много скриптов в один момент времени могут запросить данные из таблици на обработку. Условия: Кол-во скриптов : > 100 (желательно чем больше - тем лучше). Выборка порции происходит 1-3 сек. Требования: Выборка должна быть максимально распаралелена (оптимально 5 параллельных выборок). Cкрипты недолжны брать на обработку одни и теже данные. Скрипт не имеет постоянного соеденения с базой: ВЗЯЛ - ОТРАБОТАЛ - ПОЛОЖИЛ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.12.2004, 16:15
|
|||
|---|---|---|---|
Нетривиальная задачка: SELECT совмещённый с UPDATE |
|||
|
#18+
>Cкрипты не должны брать на обработку одни и те же данные. в противном случае всё летит к чертям собачьим? ну если так, предлагаю сделать буфер для проверенных страниц; что-то типа create table buffer (id int not null, constraint unique (id)); сюда в рамках транзакции пишешь ид страниц (если повторение - генерится ошибка, пытаешься снова, в общем, геморроишься по полной программе), которые собираешься проверять, можно добавить поле с датой проверки (чтобы удалять проверенные, скажем, сутки назад, страницы). В основную таблицу предлагаю ввести дополнительное поле checkid - случайно (лучше - регулярно) генерящееся число, которым метишь записи со страницами, ид которых поместил в буфер, и уж потом по checkid выбираешь нужные страницы. Второй способ: 1)помечаешь нужные страницы: Код: plaintext 1. Код: plaintext 1. Код: plaintext ma X mo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1854551]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
187ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 519ms |

| 0 / 0 |
