Как я могу заставить операции на PL / PG SQL работать в параллельном потоке? - PullRequest
0 голосов
/ 10 февраля 2020

Например:

DO
$$
DECLARE _id int;
BEGIN
    UPDATE table SET data = data + 1 WHERE id = _id;

    PARALLEL TASK START
         -- very long operation recalc
         PERFORM proc_exec_some_big_operation_recalc(_id);
         -- redist inform, that data updated
         PERFORM proc_inform_data_updated_apps(_id);
    PARALLEL TASK END;

    -- return immediate response as a result of the function
    RETURN 'success';
END;
$$ LANGUAGE plpgsql;

Мне нужна эта функция по двум причинам: - когда требуется выполнить длинные операции преобразования данных, но должен быть возвращен результат функции (например, о изменение данных) немедленно - когда вы хотите уведомить многие приложения, чтобы сообщить, что данные изменились. Но в то же время вы должны быть уверены, что данные действительно записаны

1 Ответ

0 голосов
/ 10 февраля 2020

Вы не можете сделать это, потому что PL / pg SQL, и действительно PostgreSQL, являются однопоточными.

Вы должны использовать PL / Proxy , что написано именно для таких проблем, как ваша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...