PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Управление на връзката в PostgreSQL:Ръководство

Ефективността винаги е важна във всяка система. Ще трябва да използвате добре наличните ресурси, за да осигурите възможно най-доброто време за реакция и има различни начини да направите това. Всяко свързване към база данни консумира ресурси, така че един от тези начини е да имате добър мениджър на връзки между вашето приложение и базата данни. В този блог ще говорим за pgBouncer, пул за връзки за PostgreSQL, и ще покажем как да приложите това, за да подобрите ефективността на PostgreSQL.

Пулери за връзки

В зависимост от трафика на вашите системи, може да е полезно да добавите външен инструмент за намаляване на натоварването на вашата база данни, което ще подобри производителността. Може би не е достатъчно, но е добра отправна точка. За тази цел е добра идея да внедрите пул за връзки 

Обединяването на връзки е метод за създаване на пул от връзки и повторното им използване, като се избягва непрекъснатото отваряне на нови връзки към базата данни, което значително ще увеличи производителността на вашите приложения. PgBouncer е популярен пул за връзки, създаден за PostgreSQL.

Как работи PgBouncer

PgBouncer действа като PostgreSQL сървър, така че просто трябва да получите достъп до вашата база данни, като използвате информацията на PgBouncer (IP адрес/име на хост и порт), а PgBouncer ще създаде връзка със сървъра на PostgreSQL или ще използвайте повторно такъв, ако съществува.

Когато PgBouncer получи връзка, той извършва удостоверяване, което зависи от метода, посочен в конфигурационния файл. PgBouncer поддържа всички механизми за удостоверяване, които PostgreSQL сървърът поддържа. След това PgBouncer проверява за кеширана връзка със същата комбинация потребителско име+база данни. Ако е намерена кеширана връзка, тя връща връзката към клиента, ако не, създава нова връзка. В зависимост от конфигурацията на PgBouncer и броя на активните връзки е възможно новата връзка да бъде поставена на опашка, докато може да бъде създадена или дори прекратена.

Поведението на PgBouncer зависи от конфигурирания режим на обединяване:

  • обединяване на сесии (по подразбиране):Когато клиент се свърже, ще му бъде присвоена сървърна връзка за цялото продължителност, през която клиентът остава свързан. Когато клиентът прекъсне връзката, връзката със сървъра ще бъде върната в пула.

  • обединяване на транзакции:Връзката със сървъра се присвоява на клиент само по време на транзакция. Когато PgBouncer забележи, че транзакцията е приключила, връзката със сървъра ще бъде върната в пула.

  • обединяване на инструкции:Връзката със сървъра ще бъде върната в пула веднага след приключване на заявката. Транзакциите с множество оператори са забранени в този режим, тъй като биха се развалили.

Как да внедрите PgBouncer с помощта на ClusterControl

За това ще приемем, че вашият PostgreSQL клъстер работи и работи и използвате ClusterControl, за да го управлявате, в противен случай можете да следвате тази публикация в блога, за да внедрите лесно PostgreSQL за висока достъпност.

Отидете на ClusterControl -> Изберете PostgreSQL Cluster -> Cluster Actions -> Add Load Balancer -> PgBouncer. Там можете да разположите нов PgBouncer възел, който ще бъде разгърнат в избрания възел на базата данни, или дори да импортирате съществуващ PgBouncer възел.

Ще трябва да посочите IP адрес или име на хост, порт за слушане и PgBouncer акредитивни писма. Когато натиснете Deploy PgBouncer, ClusterControl ще получи достъп до възела, ще инсталира и конфигурира всичко без никаква ръчна намеса.

Можете да наблюдавате напредъка в секцията за активност на ClusterControl. Когато приключи, трябва да създадете новия пул. За това отидете на ClusterControl -> Изберете клъстера PostgreSQL -> Възли -> PgBouncer Node.

Тук ще трябва да добавите следната информация:

  • Име на хост PgBouncer:Изберете хостовете на възела, за да създадете пула за връзки.

  • Име на пул:Имената на пула и базата данни трябва да са еднакви.

  • Потребителско име:  Изберете потребител от основния възел на PostgreSQL или създайте нов.

  • Режим на пул:Това може да бъде един от режимите, които споменахме по-рано:сесия (по подразбиране), транзакция, или обединяване на изявления.

  • Размер на пул:максимален размер на пуловете за тази база данни. Стойността по подразбиране е 20.

  • Максимален брой връзки към базата данни:Конфигурирайте максимум за цялата база данни. Стойността по подразбиране е 0, което означава неограничено.

Сега трябва да можете да видите пула в секцията Node.

Това е основна топология. Можете да го подобрите, например, като добавите възли за балансиране на натоварването, повече от един, за да избегнете една точка на повреда, и като използвате някакъв инструмент като „Keepalived“, за да гарантирате наличността. Може да се направи и с помощта на ClusterControl.

Заключение

Използването на PgBouncer като пул за връзка е добър начин за подобряване на производителността на базата данни, като се използват добре наличните ресурси в сървъра.

Можете също да подобрите тази топология, като използвате комбинация от PgBouncer + HAProxy, за да постигнете висока достъпност за вашия PostgreSQL клъстер. Всички тези неща могат да се правят от същия потребителски интерфейс на ClusterControl.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - как да върна редове с 0 броя за липсващи данни?

  2. няма запис pg_hba.conf за хост

  3. psql:не можа да се свърже със сървъра:Връзката е отказана Грешка при свързване към отдалечена база данни

  4. Защо имаме нужда от посредници на съобщения като RabbitMQ върху база данни като PostgreSQL?

  5. SQL:Изберете записи, където ВСИЧКИ съединени записи отговарят на някакво условие