powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Какие подводные камни есть в одновременном использовании PQexec и PQsendQuery ?
2 сообщений из 2, страница 1 из 1
Какие подводные камни есть в одновременном использовании PQexec и PQsendQuery ?
    #38643366
orfelin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Камрадесы есть такая тема.
Сейчас юзается многопоточное С++ приложение ( два потока на ядро ) и по одному собственному коннекту к бд на поток.

Сейчас для выполнения всех запросов используется PQexec вызов которого синхронный:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
bool DataBase::pqexec( const char* query, PGresult*& res )
{
	res = PQexec( m_connect, query );

	if ( res )
	{
		ExecStatusType succ = PQresultStatus( res );

		if(  PGRES_TUPLES_OK != succ && PGRES_COMMAND_OK != succ ) 
		{
			char * error = PQerrorMessage( m_connect );

			pgLog::error( "DataBase::pqexec. DataBase error %d: query: '%s'.\nerror='%s'", (int)succ, query, error);
			pgLog::error( "DataBase::pqexec. Try to reconnect" );
		}
			
		return true;
	}
}



есть у нас часть запросов ( чуть больше половины ) в которых не надо ждать ответа от сервера бд и есть интерес заделать такие запросы асинхронно, потому что их синхронное выполнение через PQexec до 50мс занимает что увеличивает время отклика для конечного пользователя что не хорошо.

какие есть подводные камни в одновременной, но в разных потоках, работе с БД и с PQsendQuery и с PQexec ?

могут ли "пропадать" команды при использовании PQsendQuery ?
Код: plaintext
1.
2.
3.
4.
5.
6.
bool DataBase::pqexecAsync( const char* query  )
{
	PQsendQuery( m_connect, query );

	return true;
}



какую схему можете порекомендовать для части SQL запросов которые в стиле "послал и забыл" ?
...
Рейтинг: 0 / 0
Какие подводные камни есть в одновременном использовании PQexec и PQsendQuery ?
    #38644403
orfelin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подводный камень номер раз - одновременное использование их влечет краш и нестабильную работу
надо создавать разные коннекты

пока вроде без сбоев работает
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Какие подводные камни есть в одновременном использовании PQexec и PQsendQuery ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]