Что произойдет, если я выполню две команды SQL, используя одно и то же соединение с БД? - PullRequest
0 голосов
/ 15 ноября 2018

Я пишу программу для запуска массовых вычислений и вывода результатов в PostgreSQL.

Моя платформа - Windows Sever 2008, PostgreSQL 10. Моя программа написана на языке C.

Результатыбудет производиться по группам, при завершении каждой группы будет создан дополнительный поток для записи выходных данных.

Теперь, поскольку выходные потоки создаются одна за другой, возможно, что две или более команд ввода SQL будутсоздается одновременно, или предыдущий находится в процессе, когда новые вызывают функцию.

Итак, мои вопросы:

(1) Что произойдет, если один поток находится в обработке SQL, а другой -под названием PQexec(PGconn *conn, const char *query), будут ли они влиять друг на друга?

(2) Что если я применю другое PGconn?Это ускорится?

1 Ответ

0 голосов
/ 15 ноября 2018

Если вы попытаетесь вызвать PQexec для соединения, которое находится в процессе выполнения оператора SQL, вы вызовете нарушение протокола.Это просто не работает.

Обработка, безусловно, может быть выполнена быстрее, если вы используете несколько соединений с базой данных параллельно - параллельные транзакции - это то, для чего предназначен PostgreSQL.

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