|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
Petro123qi_ipсоздает отдельные микрозадачи каждые в своем потоке.хотя бы время озвучил микрозадачи и задержку таймера. Сложно сказать, так как пока в режиме теста (подбор возможных вариантов). По сути, задержка таймера по минимуму. Время на микрозадачу: селект записи по userId, считывание данных строки в переменную, отправка по вебсокету этих данных, апдейт статуса строки - конец задачи. Сколько займет времени пока не замерял - нужно чем быстрее, тем лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 15:54 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ip, Если врубить второй кэш в хибере, то и в базу не надо лезть). ... Преждевременная оптимизация называется. Тесты нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 16:05 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
Petro123qi_ip, Если врубить второй кэш в хибере, то и в базу не надо лезть). ... Преждевременная оптимизация называется. Тесты нужны. К сожалению, хибер тут не используется ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 16:14 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ipНюанс в том, что я не могу это объединить в общий запрос для апдейта, так как по каждой записи, которую сделал select по сокету каждому пользователю отправляю сообщение. С пулом потоков будет быстрее? И что, транзакции висят пока сообщение не будет отправлено? Только потом комитяться? Это же пипец базе, залочится всё нахрен. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 16:29 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
BlazkowiczИ что, транзакции висят пока сообщение не будет отправлено? +1 Аффтар! Решение без коммита: При новой сессии отпраляем все что спросит. При каждой отправке пишем в оперативку тайштамп время последней отправки. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 16:45 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
Blazkowiczqi_ipНюанс в том, что я не могу это объединить в общий запрос для апдейта, так как по каждой записи, которую сделал select по сокету каждому пользователю отправляю сообщение. С пулом потоков будет быстрее? И что, транзакции висят пока сообщение не будет отправлено? Только потом комитяться? Это же пипец базе, залочится всё нахрен. Делаю селект, отправляю сообщение с данными из селекта, делаю апдейт. При селекте, разве база лочится? Petro123BlazkowiczИ что, транзакции висят пока сообщение не будет отправлено? +1 Аффтар! Решение без коммита: При новой сессии отпраляем все что спросит. При каждой отправке пишем в оперативку тайштамп время последней отправки. И потом общий апдейт? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 17:19 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ipДелаю селект, отправляю сообщение с данными из селекта, делаю апдейт. При селекте, разве база лочится? Тогда всё ещё не понятно почему нужно делать апдейты в отдельных потоках? Получили список ID. Сделали по нему выборку. Отправили всем сообщения. Потом батч-апдейтом накатили всем то кого пришло подтверждение. Вы изобретаете потоки там где они не нужны. Потоки вам по факту нужны только чтобы отправлять сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 17:55 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ipИ потом общий апдейт?о чем? Незачем сохранять в базу вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 18:27 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ipPetro123пропущено... хотя бы время озвучил микрозадачи и задержку таймера. Сложно сказать, так как пока в режиме теста (подбор возможных вариантов). По сути, задержка таймера по минимуму. Время на микрозадачу: селект записи по userId, считывание данных строки в переменную, отправка по вебсокету этих данных, апдейт статуса строки - конец задачи. Сколько займет времени пока не замерял - нужно чем быстрее, тем лучше. Дружище. Я читаю уже много постов и не пойму какая решается задача. Классическая работа с бд в режиме OLTP не требует каких то фоновых потоков и ухищрений. Либо у тебя в бд уже есть проблема и ее надо решать в бд. Плодить потоки можно в java бесконечно много но это не помогает работе БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2018, 18:58 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
BlazkowiczТогда всё ещё не понятно почему нужно делать апдейты в отдельных потоках? Получили список ID. Сделали по нему выборку. Отправили всем сообщения. Потом батч-апдейтом накатили всем то кого пришло подтверждение. Вы изобретаете потоки там где они не нужны. Потоки вам по факту нужны только чтобы отправлять сообщения. Понятно, согласен, что для апдейтить в потоке может быть не правильно, единственный нюанс который я вижу, что апдейты будут не успевать за отправками сообщениями, но тут чисто ИМХО, так как еще не протестировал. Petro123qi_ipИ потом общий апдейт?о чем? Незачем сохранять в базу вообще. Мне нужно проапдейтить запись, для кого было отправлено сообщение. maytonДружище. Я читаю уже много постов и не пойму какая решается задача. Классическая работа с бд в режиме OLTP не требует каких то фоновых потоков и ухищрений. Либо у тебя в бд уже есть проблема и ее надо решать в бд. Плодить потоки можно в java бесконечно много но это не помогает работе БД.. Потоки появились из-за необходимости через вебсокет отправлять сообщения определенным пользователям с максимальной скоростью доставки, а апдейтить, как уже написал Blazkowicz можно не в потоке, а батч-апдейтом. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 09:36 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ipМне нужно проапдейтить запись, для кого было отправлено сообщение.десять раз спросить? Зачем это нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 09:51 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
Petro123qi_ipМне нужно проапдейтить запись, для кого было отправлено сообщение.десять раз спросить? Зачем это нужно? Пометить что для данного пользователя определенный текст был отправлен и не отправлять в следующий раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 09:53 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ip, Я же привел вариант. При старте сессии ты отправляешь клиенту все мессаги что попросит. Он же их не хранит у себя. А потом хранишь не в базе а в оперативке. Вариант? Тогда апдейт не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 10:00 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ip, Помечают в базе когда БЛ в базе. Например, хранимка JOB. У тебя БЛ не в базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 10:02 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
Petro123qi_ip, Я же привел вариант. При старте сессии ты отправляешь клиенту все мессаги что попросит. Он же их не хранит у себя. А потом хранишь не в базе а в оперативке. Вариант? Тогда апдейт не нужен. Согласен, вариант, но тогда в моем случае, если не будет помечено, что данному пользователю конкретное сообщение было послано, после потенциальной перезагрузке сервера все сообщения опять заново полетят, что не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 10:07 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ip, Нет))). Будет опять реконнект и новая сессия. Короче, делай потоки хоть на select. Аргументы кончились. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 10:11 |
|
Создание потоков из Timer
|
|||
---|---|---|---|
#18+
qi_ipПотоки появились из-за необходимости через вебсокет отправлять сообщения определенным пользователям с максимальной скоростью доставки, а апдейтить, как уже написал Blazkowicz можно не в потоке, а батч-апдейтом.тонким местом будет перебор листа с пользователями кому надо отправлять. qi_ipкак уже написал Blazkowicz можно не в потоке, а батч-апдейтом.это да, но только пока ты заполняешь этот батч, а как заполнишь - будешь ждать пока он выполнится.... вот тут их можно разнести на потоки 2батча - 2 потока. но вопрос а субд справится? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2018, 10:14 |
|
|
start [/forum/topic.php?fid=59&gotonew=1&tid=2121796]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 203ms |
0 / 0 |