sql >> Databáze >  >> RDS >> PostgreSQL

Správa připojení v PostgreSQL:Průvodce

V každém systému je vždy důležitý výkon. Budete muset dobře využít dostupné zdroje, abyste zajistili co nejlepší dobu odezvy a existují různé způsoby, jak toho dosáhnout. Každé připojení k databázi spotřebovává zdroje, takže jedním z těchto způsobů je mít dobrý správce připojení mezi vaší aplikací a databází. V tomto blogu budeme hovořit o pgBouncer, pooleru připojení pro PostgreSQL, a ukážeme si, jak to implementovat pro zlepšení výkonu PostgreSQL.

Poolery připojení

V závislosti na provozu vašich systémů může být užitečné přidat externí nástroj ke snížení zatížení vaší databáze, což zlepší výkon. Možná to nestačí, ale je to dobrý výchozí bod. Za tímto účelem je vhodné implementovat sdružovač připojení 

Sdružování připojení je metoda vytváření fondu připojení a jejich opětovného použití, aniž by se neustále otevíraly nová připojení k databázi, což výrazně zvýší výkon vašich aplikací. PgBouncer je populární sdružovač připojení navržený pro PostgreSQL.

Jak PgBouncer funguje

PgBouncer funguje jako PostgreSQL server, takže stačí přistupovat k databázi pomocí informací PgBouncer (IP adresa/název hostitele a port) a PgBouncer vytvoří připojení k serveru PostgreSQL nebo znovu použít, pokud existuje.

Když PgBouncer přijme spojení, provede ověření, které závisí na metodě uvedené v konfiguračním souboru. PgBouncer podporuje všechny autentizační mechanismy, které PostgreSQL server podporuje. Poté PgBouncer zkontroluje připojení uložené v mezipaměti se stejnou kombinací uživatelského jména a databáze. Pokud je nalezeno připojení uložené v mezipaměti, vrátí připojení klientovi, pokud ne, vytvoří nové připojení. V závislosti na konfiguraci PgBouncer a počtu aktivních připojení je možné, že nové připojení bude zařazeno do fronty, dokud nebude možné vytvořit, nebo dokonce přerušit.

Chování PgBouncer závisí na nakonfigurovaném režimu sdružování:

  • sdružování relací (výchozí):Když se klient připojí, bude mu přiřazeno připojení k serveru pro celou dobu, po kterou klient zůstane připojen. Když se klient odpojí, připojení k serveru se vrátí zpět do fondu.

  • sdružování transakcí:Připojení k serveru je klientovi přiřazeno pouze během transakce. Když PgBouncer zaznamená, že transakce je u konce, připojení k serveru se vrátí zpět do fondu.

  • sdružování příkazů:Připojení k serveru bude vráceno zpět do fondu ihned po dokončení dotazu. Transakce s více příkazy jsou v tomto režimu zakázány, protože by se přerušily.

Jak implementovat PgBouncer pomocí ClusterControl

Předpokládáme, že máte svůj PostgreSQL cluster spuštěný a spuštěný a používáte ClusterControl k jeho správě, jinak můžete následovat tento blogový příspěvek a snadno nasadit PostgreSQL pro vysokou dostupnost.

Přejděte do ClusterControl -> Vyberte PostgreSQL Cluster -> Cluster Actions -> Add Load Balancer -> PgBouncer. Zde můžete nasadit nový uzel PgBouncer, který bude nasazen ve vybraném databázovém uzlu, nebo dokonce importovat existující uzel PgBouncer.

Budete muset zadat IP adresu nebo název hostitele, port pro poslech a PgBouncer pověření. Když stisknete Deploy PgBouncer, ClusterControl přistoupí k uzlu, nainstaluje a nakonfiguruje vše bez jakéhokoli ručního zásahu.

Pokrok můžete sledovat v části ClusterControl Activity Section. Po dokončení musíte vytvořit nový fond. Za tímto účelem přejděte do ClusterControl -> Vyberte cluster PostgreSQL -> Nodes -> PgBouncer Node.

Zde budete muset přidat následující informace:

  • Název hostitele PgBouncer:Vyberte hostitele uzlů pro vytvoření fondu připojení.

  • Název fondu:Názvy fondu a databáze musí být stejné.

  • Uživatelské jméno:  Vyberte uživatele z primárního uzlu PostgreSQL nebo vytvořte nového.

  • Režim fondu:Může to být jeden z režimů, které jsme zmínili dříve:relace (výchozí), transakce, nebo sdružování výpisů.

  • Velikost fondu:Maximální velikost fondu pro tuto databázi. Výchozí hodnota je 20.

  • Max. databázová připojení:Nakonfigurujte maximum pro celou databázi. Výchozí hodnota je 0, což znamená neomezeně.

Nyní byste měli vidět fond v sekci Uzel.

Toto je základní topologie. Můžete to vylepšit, například přidáním uzlů pro vyrovnávání zatížení, více než jednoho, abyste se vyhnuli jedinému bodu selhání, a pomocí nějakého nástroje, jako je „Keepalived“, abyste zajistili dostupnost. Lze to provést také pomocí ClusterControl.

Závěr

Použití PgBouncer jako pooleru připojení je dobrý způsob, jak zlepšit výkon databáze a dobře využít dostupné zdroje na serveru.

Tuto topologii můžete také zlepšit použitím kombinace PgBouncer + HAProxy pro dosažení vysoké dostupnosti pro váš cluster PostgreSQL. Všechny tyto věci lze provádět ze stejného uživatelského rozhraní ClusterControl.


  1. Jak opravit:„SQLServerAgent aktuálně neběží…“

  2. Databázový model pro online průzkum. Část 4

  3. pokud má tabulka 4 sloupce a chci načíst 3. sloupec, co mám dělat.

  4. Sloučit překrývající se časové intervaly