рдореИрдВ рдПрдВрдбреНрд░реА рд╕рд▓рдирд┐рдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ 2019 рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, "рдЬрдм рдПрдХ рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдкрд░ рд▓реЛрдб рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛"
рдореБрдЦреНрдп рдмрд┐рдВрджреБ:
1) рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдорд╛рдирдХ рд▓реЛрдб рд╕рдВрддреБрд▓рди рдкреНрд░рдерд╛рдУрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ рдХрджрдо рдЙрди рд▓реЛрдб рд╕рдВрддреБрд▓рди рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИред
2) рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реАрдХреНрдпреВ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдЖрдпреЛрдЬрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИрдВ, рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред
![](https://habrastorage.org/webt/vy/7v/gk/vy7vgkxphftzmdi4tsvtuxzdwrm.png)
![](https://habrastorage.org/webt/34/cy/s9/34cys9vfr-k70f_s3n5uayiv5yg.png)
, . тАУ Data Egret. . . HeadHunter, Lamoda. DBA PostgreSQL. DBA тАУ . . , .
, - , .
Postgres open sourceтАЩ community, . , Postgres.
, RDBMS . тАУ enterprise: Oracle MSSQL, open source: MySQL Posgres, .
- . . . тАУ Postgres .
тАУ .
, - . , , , . . . Postgres, , , . , , .
![](https://habrastorage.org/webt/cc/po/md/ccpomdtvx7l1nmt0qeulyxbsuue.png)
. ? , . , -, .
![](https://habrastorage.org/webt/rm/uh/6s/rmuh6s-kc2ejk1ay1uplobgs-fk.png)
, .
![](https://habrastorage.org/webt/f5/uq/jy/f5uqjyjsnkdfxzyuwnr9qn6jvi0.png)
, , . . , , , , , , .
. , ? , raid 1 raid 0. . -. , , . , . , .
![](https://habrastorage.org/webt/wg/if/xu/wgifxu16lwnnmgir-lybswio2ag.png)
, , тАУ 20 000-30 000. 40 000, , - . .
, . 50 000 . .
![](https://habrastorage.org/webt/eu/ik/cc/euikccla9vsax4yvvru28skaey4.png)
, , - - . . тАУ , . . , . , . . . , , - , , , . .
![](https://habrastorage.org/webt/6m/p4/nw/6mp4nwfdikdo6_rwqimxkgwkwqi.png)
. . , , . . , . .
, . тАУ ┬лexclusive┬╗, ┬лshare┬╗.
20 000 ( ), , - .
: HH Lamoda. , ? 10-20-50 , .
. , .
![](https://habrastorage.org/webt/vq/mu/vj/vqmuvjdtlmjzrmqtmbx2rdhogo4.png)
, , . , , . - . , , , , , , . .
, , Postgres , . . Postgres Posix, , , . тАУ . , , : ┬л, ┬╗ sleep. , . , . , .
![](https://habrastorage.org/webt/mh/6_/rn/mh6_rn09u98aujcgwr14ihkqq5q.png)
. .
![](https://habrastorage.org/webt/gy/km/5n/gykm5nsop8tkc-6odj43ffibnd4.png)
timestamps.
, 30 . . . . RDBMS , . , - . , . , . .
![](https://habrastorage.org/webt/rr/ke/u-/rrkeu-kvdfhy1crr9ihenj4fruw.png)
-. , . .
, тАУ idle-. Idle- , - pool connection. , , . , , , , , , , . overhead, , -, .
тАУ . тАУ , .
тАУ , . - , : , . .
тАУ - , . , , , .
? . .
, . ? -, . -, - Postgres ( MVCC), . update/delete, , , , .
idle in transaction , , Postgres . , . . , . , . , . - ( ), 10 , 300 , 400 . . Postgres, .
тАУ waiting. , - . , , . , , .
, . . : - , . , Ruby, Python. , . , , - , . idle in transaction.
instances , . . - . . . , .
![](https://habrastorage.org/webt/lk/ww/wg/lkwwwgzx6mdk0yzmhyyn8n63kiq.png)
-. , pool connection . pools, . Hibernate pools. , pool. , pool .
, . , , idle-. . . , . , , , . , . , . . .
, , .
![](https://habrastorage.org/webt/xx/jd/kx/xxjdkx2jp-z3f4skrdv1a04xoii.png)
, , , . , .
![](https://habrastorage.org/webt/iw/jr/op/iwjrop7pew4tbjl_vajquavr2tm.png)
.
, . . , , тАУ . , - .
, , , . . , .
, 2,5 . 2 тАУ transaction log. . , . , . . . 1,5 . : ┬л . ┬╗. 0,5 . 2,5 0,5 . , .
. , . , , . .
. ORM-. . , , , . .
, , 2 , , 490 , . 490 , , . - . .
, , . , , , , , .
. , , , . . , - . , , , - , .
, , . , , . , . . , , . . , , тАУ 3-4 , .
. . , .
? , . , , - . , : , , . , , ┬л , ┬╗. , , , . , , , .
. Json, , . . . - Json . . , .
. , , , , . . . . , , , . , Json, . Json, . , .
![](https://habrastorage.org/webt/rx/fq/an/rxfqaneiyipzobi6g4atdwncuik.png)
. , join. . , , , , , .
Java , hibernate . Hibernate, , . . , 2 , . , . 2 тАУ , .
, , Python, 490 , . . 5 . . . , . , - , , .
2 . , , . .
, , , . . , , , , . . , , . . . LEFT JOIN, DISTINCT , , - .
GROUP BY тАУ DISTINCT. . . , . .
тАУ COUNT, MAX, MIN , . . , , . , , . , . . . - . . , MIN, MAX . . .
, . ┬лWHERE id IN (SELECT id FROM)┬╗, . ┬лNOT EXISTS┬╗. id, , .
, . SELECT ids. id , тАУ .
NOT EXISTS , . , : ┬л, id, ┬╗. WHERE, . , WHERE , , , .
тАУ . . , - , , . cron- ( ) , , , . , .
. , -, , . - . , , . PIDs . , , .
, HH , cron тАж, . . cron . , , тАУ .
![](https://habrastorage.org/webt/mu/b3/cz/mub3czf7ns67jcqyaytzecwany8.png)
. . , : Kafka, RabbitMQ, ZeroMQ, .
, . . Skype SkyTools PGQ. . . . . 20 000-30 000 .
тАУ . , . , , .
. . DBA, , Postgres. .
. , , idles. , .
idle-. . . , 10 , 15, 15 , . . idle 15 . , , .
pgbouncer . . , .
PgBouncer transaction-, . . : start transaction commit rollback. , тАж тАУ . тАУ . , , , .
Pgpool-II, , .
PgBouncer , . . Odyssey. . , . . . . -, , , - Odyssey Pgbouncer. PgBouncer тАУ .
. , COUNT 200 , 200 . MIN , .
200 , 100 . . .
тАУ , . . . , . , , , . , .
, . ? , 100 , 2 200 . , . , 90 % 10 % . 200 , .
. . Oracle, partition. ┬л┬╗ . - тАУ .
. .
![](https://habrastorage.org/webt/gr/el/hw/grelhwc_t8madpm_5ndatmknohy.png)
?
![](https://habrastorage.org/webt/ql/gc/k5/qlgck5fyv4d8lzktqsbhd5_xmvc.png)
. , , .
. , : , , , . , . , , . , , . , , . , .
. , , , , .
тАУ . , , , : HDD SSD. NVMe . тАУ , . , NVMe, .
![](https://habrastorage.org/webt/8x/jm/zm/8xjmzms2ii2duunfi3gg_02e4s0.png)
? WHERE , , , .
, - . . .
![](https://habrastorage.org/webt/ja/zb/fa/jazbfalflti4_0ddrfgujhopoum.png)
тАУ . тАУ , . тАУ , , . . тАУ drop table, .
. - , , . - . , тАУ Coca-Cola, Pepsi, Nike, Adidas . . , . . . .
, , , . . . , . . . . , . , , .
![](https://habrastorage.org/webt/ta/u0/az/tau0azsogwuj8bu8b0ksvoxugno.png)
, , , 4 , 2 , 2 , , : ┬л ?┬╗.
, - . , . , RDBMS .
![](https://habrastorage.org/webt/ww/19/1l/ww191lk7ygiyr6cqv8pq0zrt1my.png)
. , , , .
: .
тАУ , . INSERT. INSERT INSERTтАЩ . DELETE DELETE SQL . .
. INSERT . , . . . . , .
, .
9.4 . . 9.6 . 10-11 . , , , , .
Postgres . , тАУ , . .
Postgres, , , , . тАУ . INSERTS DELETES.
, . Slony, Londiste Burcado.
Burcado тАУ . тАУ Slony. Londiste тАУ , . , .
, , SQL? . , , . , - . , .
, Postgres , . .
? .
тАУ -, , -. -, . , -. - .
. , -. Postgres , Postgres , , , , , , .
. . .
, , , , , , .
. , . , , 10-20 .
. , , .
? -, . , -, 20 , , , , . - . . , . -.
. . , Postgres, . .
. delayed . , . , 8 , 8 , . , 6 , . . . , . . . , 200 тАУ .
. . . . , , - , , . . . тАУ . , . . , , .
![](https://habrastorage.org/webt/km/pc/lk/kmpclki5wedkfrszxi3dnr5ntay.png)
. ?
wal_keep_segments. , . - , , , wal- тАУ 16 . . . 1 000 , , 1,5 . , .
, тАж, , -, , , . , ┬л0┬╗ . , .
Max_standby_streaming_delay. . ? , . , - . , , . , , , .
, , , , . , Postgres , .
Synchronous_standby_names. - . . . . . . . . . .
Hot_standby_feedback. , , . , , , . .
, - : ┬л , -. , , ┬╗. .
. . Hot_standby_feedback , -, . , . .
Recovery_min_apply_delay. CI/CD , , - , . 6 . 6 , . 8 .
, . , .
![](https://habrastorage.org/webt/fn/dr/1l/fndr1llehqthygjt5uqwykh8x70.png)
.
![](https://habrastorage.org/webt/ej/tq/m1/ejtqm1budhykipev2bjuv_iu_to.png)
Postgres , . .
, full story , -, - . -. .
? , , . , COUNT, MAX - , , .
![](https://habrastorage.org/webt/n0/uq/wp/n0uqwpt9y4_y9kvbwskylqivq0y.png)
. 20 , . . . , , - . Join, .
![](https://habrastorage.org/webt/vh/8d/ti/vh8dtijwx5g9qo2wwuahgybs-pe.png)
- , KPI -. . , . max_standby_streaming_delay. , 4 , .
, 2 , . . . OLAP-, , -, , . , OLAP-. .
, , HeadHunter , . - . . , , . .
RDBMS , , , RDBMS, . , ClickHouse, .
![](https://habrastorage.org/webt/ub/y0/np/uby0npfyqjxw-n7yxipktns5jcq.png)
. , latency. , , , , - . , . , . . . , . , , , .
, - , . - . , . .
, , , , . . . .
рд╣реЗрдбрд╣рдВрдЯрд░ рдкрд░ тАЬрд▓рд╛рд╕реНрдЯ рдПрдбрд┐рдХреНрд╢рди рд╕реНрдЯреЗрдЬтАЭ рд╕реНрдХреАрдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рд╡рд╣рд╛рдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдореБрдЦреНрдп рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╕реНрдХреЗрдб рдореЗрдВ 11 рд╕рд░реНрд╡рд░ рд╣реИрдВред рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдкрд╛рдЧрд▓ рдореЛрдиреЛрд▓рд┐рде рд╣реИ рдЬреЛ рдШрдбрд╝реА рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЙрдирдХреА рд╕рд╣рд╛рдпрддрд╛ рдЯреАрдо рдХрд╛ рдкреНрд░реАрдорд┐рдпрдо рд╣реИ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреИрд╕рд╛ рдерд╛ред рдЙрдирдХреЗ рдкрд╛рд╕ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрд╛ рд╕рдордп рд╣реИред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдЕрдиреБрдордд рд╕рдордп рд╕реЗ рдХрд┐рддрдирд╛ рдмрдЪрд╛рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ рд╣реИред рдФрд░ рд╡реЗ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рд╣реИред
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред рдпрд╣ рдЕрдзрд┐рдХ рдордиреЛрд░рдо рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред
рд╡реАрдбрд┐рдпреЛ: