Apa yang harus dilakukan jika server master PostgreSQL mati saat dimuat?
Cukup sering ada situasi ketika database tidak mendukung beban yang ada dan penskalaan perangkat keras vertikal tidak membantu. Ubah PostgreSQL ke database lain atau desain ulang arsitektur aplikasi dan tinggalkan DBMS?
Biarkan saya memperkenalkan diri.
. Postgres. Data Egret. DBA . Postgres. , , .
. . Postgres โ open source , , , . . . .
โ - , . , , , . .
โ . , . . .
, , . 50 000 - โ Postgres. โ 20 000-30 000. . , , , - .
, CPU. , , CPU , , .
. , 20 000 . .
, . , .
. , Postgres, , . , , , , , . . , . , , . . . .
, . . 40 000 , .
, , . , , - , . , . Postgres.
โ , . , 10-20 .
, , . , - .
, โ , idle in transaction.
Idle in transaction โ , transaction id . : , . . , .
, , , .
, pool connections. pool connections, : Hibernate , Python . , , . .
, , . PgBouncer Odyssey, , .
- . .
, . , , . , , - , .
, . 100 % .
50 % . - , , , 80 % 90 % . ? , , , . , , - , , . . , . , . - , . RDBMS . RDBMS - -, , , , . โ - , -, .
, 50 % . , , . , , , , , -. , 10 , , 10 . , , . - , , 50 % .
โ , . , , , 10 , . . , , , . , , , , . , , . , , , , .
, . , .
- , , . ID, ID . , , . Postgres , . , . . JSON, , JSON, JSON. JSON โ , , Postgres.
- . . JSON - , , JSON. , , . - , - , . . , . , , , . , , , - - . , . , . . . .
. โ , . . , , . , , - . ORM, . , 1 , 200 . . , , 20 , , , , - . . . , , , , . Postgres, , , , .
, DISTINCT n*JOIN. , DISTINCT GROUP BY , , - . , JOIN, JOIN , . . , , , , . , JOIN . , . - , DISTINCT, . - , 10 . โ , , .
โ COUNT, MAX, MIN, SUM , . , . , , 5 . 5 , , - โ , - . , , , .
, . WHERE id IN SELECT . . EXISTS (SELECTโฆ). . SELECT - , . , .
LEFT JOIN , EXISTS (SELECTโฆ) , LEFT JOIN. ? LEFT JOIN , . EXISTS. . . , LEFT JOIN, EXISTS, , .
โ
. , . . , , - -, , - , , , , -, . . , , . , , Postgres. , . , superuser. , . , . -, - . . , . cron. report . , - , - , , , , . . - , .
, Postgres. . . , . . RabbitMQ, ZeroMQ, Kafka. , , . DBA , . . , . . . , , .
- PgQ โ , , . , , . PgQ , microsoftโ .
. - .
- , - , idle- . , . Postgres . 100-200-300 โ , . 1 000 โ , pools . idle-, . , , .
- โ PgBouncer transaction . . . prepared statements . set- PgBouncer. , , , . , , , , , . . , Odyssey PgBouncer .
. ? , , wraparound vacuum, vacuum, .
- . - , , . . - . : , . , 99 % . 1 %. , , . . , โ .
- (). ยซยป, . - โ . . , . .
, , 100 % . , . - . , , . .
- , , , , , , - Data Lake, Big Data. . . , , . , . , . . .
? , .
, , , , . - , web-. , , . . - ID, - JOIN. -.
, . , .
. , . . , . , . , Fault Tolerance, . . , . , .
. ? , , COUNT, MAX, MIN, . . , , . , , , . , .
? - . , . . . , .
, โ max_streaming_delay, . , โ , . , .
, , -, , , . . , , , . . , . , . .
? . , , - . , . , max_streaming_delay. , . , , . .
, - -, . , . , .
? , , . , -, , latency. latency โ 10-20 . .
, . , . , .
. , . , , , , .
ยซ() ยป? . . bloat . . - . - , , .
, Postgres?
Max_standby_streaming_delay โ . , , , . . , . , . . , , , . . , . . , . , .
Hot_standby_feedback โ - - . , , . , . , . โ .
hot_standby_feedback , , , , .
synchronous_standby_names. , , . . . , โ , . , , , , . . , - , . , , .
โ max_standby_streaming_delay, . โ , .
, Postgres, . . .
- . , , . , . . - , , -. -. , - .
, , , , . . , .
. , -, , -, , -. , : . , . , . , , .
, delayed . recovery.conf Postgres , , , . -.
? deploy. , , - , , . delayed , .
. . , deploy. , , , โ . , .
. , . , . , .
. , , .
, ! WAL . , , , , - ? , .
, . . . , , . . - , , - , . . , - . , . . WAL . - . .
?
-, . , . . . . , WAL-G, - . , , , - , . , , . .
!
! ! . , โ PgBouncer ? ? per_request ? . . , , PgBouncer , PgBouncer โ ?
, . transaction PgBouncer -. . . - - idle-, , . , , . . , , - , . , , , , . , , , , .
. . ?
PgBouncer . . PgBouncer . . , . , .
!
, ! ! , , , . . ?
โ .
, 100 % ?
, , - . WAL-, - , . . . . , .
- ?
. , . , . . . .
!
, ! . , . , . - . failover? . . โ ? ?
, , tools, auto_failover Postgres , - , - . , . . - , . . , . , WAL . -. , auto_failover, . , .
!
- , ? , , , - .
. instance Postgres . , . , : , , . , . . , . . โ , , .
! ! , COUNT, - ? , , ?
COUNT, , -, โ ? , , , . , , 10 . COUNT . , 10 5 . 10 . โ ? . , 3-5 .
-, .
. COUNT 100 000 , 100 000 5 100 000 , , , COUNT . . , - , . .
, , !
, ! , . . , ? PgBouncer - , instance , instance? - , ?
. . , - . - , , . ? SELECT, . ? , ? , , , . , , . . . , , . . , .
? Discovery, . , . , , . .
, ! , , , , , , - . , ? , .
PgPool , , .
, !