172 похожих чатов

Всем доброе утро! Использую в PostgreSQL Prepared-stmt'ы, а теперь планирую внедрять

PGBouncer, код сервера, взаимодействующего с Postgresql написан на Go.

Как я понял, PGBouncer не дружит с prepared-stmts, так как они живут в рамках одного соединения (процесса).

Возникает вопрос: возможно ли как-то заморочиться и подготавливать все запросы при создании коннекта PGBouncer'а и отлавливать его завершение? И стоит ли вообще игра свечь?

Проблема стоит достаточно остро, так как многие запросы выполняются, например, 0.001-0.010 ms, а вот подготовливаются 0.150-0.400 ms

10 ответов

6 просмотров

Никто Вас не заставляет использовать transaction pooling, кстати. Но то, насколько помогут другие режимы, зависит от того, как приложения обращаются с connections.

Mikhail-Masyagin Автор вопроса
Yaroslav Schekin
Никто Вас не заставляет использовать transaction p...

В базу летит множество мелких select'ов, и их число постоянно будет расти, поэтому определённо нужен transaction pooling

Mikhail Masyagin
В базу летит множество мелких select'ов, и их числ...

Я не совсем понял, как "множество мелких select'ов" связано с необходимостью transaction pooling? Важно их распределение по сессиям / транзакциям, нет?

Mikhail-Masyagin Автор вопроса
Yaroslav Schekin
Я не совсем понял, как "множество мелких select'о...

Возможно, я не очень корректно сформулировал. Мне нужен именно transaction pooling mode pgbouncer'а, потому что в базу льётся огромное число запросов от Go'шного сервера и в итоге базе становится плохо (от огромного числа порождаемых процессов). Session pooling, как я понимаю, меня не спасёт, так как при коннекте гошного сервера к БД будет использоваться одно единственное соединение Session Pooling может работать с prepare stms, а вот transaction pooling - нет, как я понял. Видел доклад про режим бинарных параметров в PostgreSQL для запросов с плейсхолдерами и неявной подготовкой запросов, но это не совсем то, как я понял

Mikhail Masyagin
Возможно, я не очень корректно сформулировал. Мне ...

> БД будет использоваться одно единственное соединение Будет использоваться столько, сколько настроите. И если Вы не сделаете pool из одного соединения, то нет, конечно. Опять-таки, вопрос в том, как клиент с т.з. PostgreSQL распределяет запросы по сессиям. Как "крайний" случай — много мелких запросов могут быть распределены по 10 постоянно активным соединениям, например — и transaction pooling только навредит. Т.е. тут нужно смотреть, как именно Go'шный сервер работает с соединениями.

Mikhail Masyagin
Возможно, я не очень корректно сформулировал. Мне ...

Внезапно в Go есть пул соединений, который как правило настраивается

Mikhail-Masyagin Автор вопроса
Dmitry M
Внезапно в Go есть пул соединений, который как пра...

То есть я правильно понимаю, что я настрою пул соединений с базой в Go, коннектится он будет к pgbouncer, а тот к postgres??

Работают, но не с transaction pooling.

Mikhail Masyagin
То есть я правильно понимаю, что я настрою пул сое...

Нужно настраивать пакет sql https://golang.org/pkg/database/sql/#DB.SetMaxOpenConns и ставить pgbouncer, если несколько приложений смотрят в базу

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Всем привет. Возможно ли выполнить код ahk без интерпритатора? Имея только скомпилированный ехе файл? Например как функция eval
proxy
6
Карта сайта