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

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

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

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

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

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

10 ответов

15 просмотров

Никто Вас не заставляет использовать 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, если несколько приложений смотрят в базу

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта