LM
Size: a a a
LM
D
LM
message заполняет один воркер, который отправляет пару keyword, message_id в другой воркер. И второй воркер должен создавать следующие записи в базе постгреса:type, если её нет.keyword, если её нет.message-keyword, если её нет.keyword в базе.on_conflict_do не используются, а используются savepoint перед каждым из шагов 1-3. Если возникла ошибка, то делаем rollback и идём дальше. Насколько это хорошо или плохо? Как это сделать более правильно? Единственное, что у меня на уме — это то, что необходимо сделать все эти добавления одной транзакцией, потому что в случае неудачи в воркере (хоть данные сейчас и записываются в самом конце работы воркера, но логика работы может измениться в скором времени) данные в базе должны быть в том виде, в котором они были до выполнения задачи.
on_conflict_do_nothing(), вроде всё работает как надо. Запущу на ночь воркеры, поглядим на результат. Но перед уходом хочу поинтересоваться, нормальное ли это поведение:pool_mode=transaction, default_pool_size=20, max_client_conn=2000LM
message заполняет один воркер, который отправляет пару keyword, message_id в другой воркер. И второй воркер должен создавать следующие записи в базе постгреса:type, если её нет.keyword, если её нет.message-keyword, если её нет.keyword в базе.on_conflict_do не используются, а используются savepoint перед каждым из шагов 1-3. Если возникла ошибка, то делаем rollback и идём дальше. Насколько это хорошо или плохо? Как это сделать более правильно? Единственное, что у меня на уме — это то, что необходимо сделать все эти добавления одной транзакцией, потому что в случае неудачи в воркере (хоть данные сейчас и записываются в самом конце работы воркера, но логика работы может измениться в скором времени) данные в базе должны быть в том виде, в котором они были до выполнения задачи.
LM

LM

LM

LM

АК
AL
AL
AL
АК
G
SELECT author, title,
ROUND(
IF(author = 'Булгаков М.А.', price * 1.1,
IF(author = 'Есенин С.А.', price * 1.05, price)), 2) AS new_price
FROM book;
No function matches the given name and argument types. You might need to add explicit type casts.RL
SELECT author, title,
ROUND(
IF(author = 'Булгаков М.А.', price * 1.1,
IF(author = 'Есенин С.А.', price * 1.05, price)), 2) AS new_price
FROM book;
No function matches the given name and argument types. You might need to add explicit type casts.G
RP
YS
AD
D

on_conflict_do_nothing(), вроде всё работает как надо. Запущу на ночь воркеры, поглядим на результат. Но перед уходом хочу поинтересоваться, нормальное ли это поведение:pool_mode=transaction, default_pool_size=20, max_client_conn=2000