|
289 / 234 / 32
Регистрация: 09.02.2011
Сообщений: 435
|
|
Как правильно и оптимально делать выборку данных?27.12.2013, 18:26. Показов 944. Ответов 5
Метки нет (Все метки)
Привет! Помогите найте правильное решение.
Есть 100 000 пользователей. Раз в минуту запускается скрипт, берет 1000 первых пользователей и что-то с ними делает. Допустим он не успевает за эту минуту обработать все выбраные записи и при этом запускается следующий поток, и берет тоже 1000 записей. Так может работать очень много потоков паралельно с одно таблицей. Как правильно и оптимально организовать механизм, чтобы они не брали одни и те же записи? Если заводить поле флаг для каждой записи и отмечать, что она в работе, то это прийдется все время большими пачками обновлять эти записи. Хранить где-то ключ последней выбранной записи и при выборе новых записей начинать с неё? У меня нет в таблице первичного числового ключа, только уникальный.
0
|
|
| 27.12.2013, 18:26 | |
|
Ответы с готовыми решениями:
5
Как правильно писать запрос к БД на выборку данных Как сделать правильно выборку из базы данных? Как правильно создать запрос на выборку данных. |
|
36 / 36 / 8
Регистрация: 04.11.2013
Сообщений: 117
|
||||||||||||||||
| 27.12.2013, 19:13 | ||||||||||||||||
|
Ну, если это разовая задача, а не бесконечная, можно заюзать дополнительную таблицу. Уникальное поле я так понял имя пользователя?
0
|
||||||||||||||||
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
|
| 28.12.2013, 00:28 | |
|
Писать куда-нибудь в сессию id последней обрабатываемой записи может? Вам в любом случае нужно как-то общаться между потоками.
Либо запускать в 1-ю минуту 1-ю тысячу, во 2-ю 2-ю тысячу и т.д. пока номер минуты не совпадет с количеством пользователей и начинать сначала
0
|
|
|
289 / 234 / 32
Регистрация: 09.02.2011
Сообщений: 435
|
|
| 28.12.2013, 23:05 [ТС] | |
|
piminov, задача не одноразовая.
fic, Каждый пользователь должен будет обрабатываться раз в 1-3 минуты, если запускать каждую тысячу в свою минуту, то первые будут очень долго ждать, пока всех не обработают.
0
|
|
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
||
| 29.12.2013, 00:26 | ||
|
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||
| 29.12.2013, 13:42 | ||||
|
order + limit + offset + shared mem
1) прочитали в памяти 4 байта, сколько записей выбрано 2) отсортировали, выбрали 3) записали 4 байта, сколько записей выбрано. 4) переход к пункту 1 Вот только если подумать, вот над этими фразами при максимальном времени, если скрипт обработает юзеров не более чем за 1 минуту, мы получим минимум 33 потока. Если ядер в системе менее 33 ну или хотя бы менее 16, то будет ещё на переключение между потоками время лишнее тратиться. Может стоит перепланировать это дело. Добавлено через 5 минут Вообще не понятно, зачем скрипт берёт именно 1000, но два разных скрипта могут параллельно выполнять работу над 2000 юзеров. Почему не сделать количество потоков = количеству ядер, запустить их одновременно, присвоить каждому свой номер в конфиге, который будет брать своё количество юзеров и выполнять. То есть для 4 скриптов, первый возьмёт offset = $count / 4, limit = $count / 4 * $num, где $count количество юзеров, а $num - номер скрипта начинающийся с 0. А ещё всё зависит от того, что скрипт с ними делает... Добавлено через 1 минуту Кстати на данный момент вроде как поддерживается многопоточность полноценная в пхп, так что вообще ен вижу проблем, почему не сделать это всё в одном скрипте, без крона, демоном.
0
|
||||
| 29.12.2013, 13:42 | |
|
Помогаю со студенческими работами здесь
6
Как лучше делать выборку? Нужно оптимально хранить и делать выборки календарь с событиями как делать выборку дат?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|