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

O pglogickém výkonu

Před několika dny jsme vydali pglogical, plně open-source řešení logické replikace pro PostgreSQL, které snad bude zahrnuto do stromu PostgreSQL v nepříliš vzdálené budoucnosti. Nebudu diskutovat o všech věcech, které umožňuje logická replikace – oznámení o vydání pglogical představuje docela dobrý přehled a Simon také stručně vysvětlil výhody logické replikace v jiném příspěvku před několika dny.

Místo toho bych chtěl mluvit o jednom konkrétním aspektu zmíněném v oznámení – srovnání výkonu se stávajícími řešeními. Pgologická stránka zmiňuje

Srovnávací

Tento příspěvek vysvětluje podrobnosti o benchmarkech, které jsme provedli, abychom našli maximální „udržitelnou“ propustnost (transakce za sekundu), kterou každé z řešení zvládne bez zpoždění. Abych to udělal, provedl jsem řadu testů pgbench na páru instancí i2.4xlarge AWS s různým počtem klientů a změřil jsem propustnost na hlavním serveru a jak dlouho trvalo, než pohotovostní režim dohnal (pokud se zpožďoval) . Výsledky byly poté použity k výpočtu odhadu maximální propustnosti v pohotovostním uzlu.

Řekněme například, že jsme spustili pgbench se 16 klienty po dobu 30 minut a na masteru jsme naměřili 10 000 tps, ale pohotovostní režim se zpožďoval a trvalo dalších 15 minut, než to dohnal. Pak je odhad maximální udržitelné propustnosti

tps =(transakce provedené) / (celková doba běhu do doby, než dojde k pohotovostnímu režimu)

tj.

tps =(30 60 10 000) / (45 * 60) =18 000 000 / 2 700 =6 666

Takže v takovém případě je maximální udržitelná propustnost v pohotovostním režimu 6,666 tps, tj. pouze ~66 % transakční rychlosti naměřené na masteru.

Systém

Srovnávací test byl proveden na dvojici instancí i2.4xlarge AWS, konfigurovaných ve stejné skupině umístění (tedy s ~2Gbitovým síťovým připojením mezi nimi) a 4x SSD discích nakonfigurovaných v RAID-0 (takže I/O pravděpodobně nebude problém zde). Instance mají ~122GB RAM, takže datová sada (pgbench s měřítkem 5000) se vejde do RAM. Všechny testy byly provedeny na PostgreSQL 9.5.0 s naprosto stejnou konfigurací:

checkpoint_timeout = 15min
effective_io_concurrency = 32
maintenance_work_mem = 1GB
max_wal_size = 8GB
min_wal_size = 2GB
shared_buffers = 16GB

Pro všechny replikační systémy byla použita nejnovější dostupná verze, zejména

  • slony1 2.2.4
  • skytools 3.2

a byla nastavena jednoduchá replikace, jak je popsáno v tutoriálech (oba používají příklad pgbench použitý pro benchmark).

Výsledky

Výsledky uvedené dále zahrnují také streamingovou replikaci (asynchronní režim), abyste získali lepší představu o režii spojené s logickou replikací. Transakční sazby nejsou „surová“ čísla měřená pgbench, ale „udržitelné“ sazby vypočítané pomocí vzorce uvedeného na začátku tohoto příspěvku.

klientů streamování pglogický slony londiste
1 1075 1052 949 861
2 2118 2048 1806 1657
4 3894 3820 3456 1643
8 6506 6442 2040 1645
16 9570 8251 1535 1635
24 11388 7728 1548 1622
32 12384 7818 1358 1623

  1. Můžeme mít více WITH AS v jednom SQL - Oracle SQL

  2. Jak se připojím k PostgreSQL bez zadání názvu databáze?

  3. ScaleGrid DBaaS rozšiřuje MySQL hostingové služby prostřednictvím AWS Cloud

  4. Vytvoření tabulky v SQL Server (T-SQL)