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=2000
LM
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