рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдХреЛрд▓реЗ рд╕рдореЛрдЦрд╛рд╡рд▓реЛрд╡ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрдпреВрдПрд▓ рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдФрджреНрдпреЛрдЧрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг: рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдпреЛрдЧ"
Shared_buffers = 25% - рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдпрд╛ рдереЛрдбрд╝рд╛ рд╣реИ? рдпрд╛ рд╕рд┐рд░реНрдл рд╕рд╣реА? рдХреИрд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдпрд╣ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛рдлреА рдкреБрд░рд╛рдиреА рд╣реИ, рдЖрдкрдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рд╣реИ?
рдпрд╣ postgresql.conf рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ "рд╡рдпрд╕реНрдХ рддрд░реАрдХреЗ рд╕реЗред" рд▓реЗрдЦреЛрдВ рдФрд░ рдмреНрд▓реЙрдЧреЛрдВ рд╕реЗ рдЕрдВрдзреЗ "рдСрдЯреЛрдЯреНрдпреВрдирд░реНрд╕" рдпрд╛ рдкреБрд░рд╛рдиреА рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░:
- рд╕рдЦреНрддреА рд╕реЗ рдХреИрд▓рд┐рдмреНрд░реЗрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдпреЛрдЧреЛрдВ рдиреЗ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдФрд░ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ "рдореБрдХрд╛рдмрд▓рд╛" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реАрдм
- рдбреАрдмреАрдПрдордПрд╕ рдФрд░ рдУрдПрд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЧрд╣рд░реА рд╕рдордЭред
рдиреИрдиреНрд╕реА рд╕реАрдПрд▓рдЖрдИ ( https://gitlab.com/postgres.ai/nancy ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рдХреБрдЦреНрдпрд╛рдд рд╕рд╛рдЭрд╛_рдмрдлрд░реНрд╕ тАЛтАЛ- рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ, рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд╕реЗрдЯрд┐рдВрдЧ рдХреИрд╕реЗ рдЪреБрдиреЗрдВред ред

рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдРрд╕реА рдХрд╣рд╛рдиреА рд╣реИ рдЬреЛ рдЫрд╣ рдорд╣реАрдиреЗ рд╕реЗ рдХреБрдЫ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЪрд▓рддреА рд╣реИред

. Postgres 14 . -. Postgres .
RuPostgres Meetup, 2- . 2 000 . RuPostgres.org.
, Highload, , Postgres .

Postgres- 11 .

, Postgres, , 2010- . , DBA, - . , - , .
, . . . . . , , . . , DBA, .

:
- ┬л ┬╗ тАУ 8 GB 25 % shared_buffers . shared_buffers .
- ┬л┬╗.

?
- , . , , Open Source, . . Open Source. , Open Source. , , . .
- , : .

?

-, DBA instances, . ., тАФ .

. , - , - . , , .

. Pg_stat_statements тАУ . Postgres pgBadger.
. . SELECT * FROM table where ┬л?┬╗ ┬л$┬╗ Postgres 10. тАУ index scan seq scan. . , index scan. , 90 % , seq scan , Postgres . pg_stat_statements, - .
, ┬лlog_min_duration_statement = 0┬╗, . . , . - , , , , .
DBA ?

, - . ? , - - instance, . DBA, staging. . . , production. DBA production, . , , , , . . .


. Postgres. . Postgres, . , DBA , DBA . . . 10 , .
тАУ . , , .

, . , 1 000 default_statistict_target тАУ . , production.

, , , .

. .
- тАУ . . - , , production. . instance Google, . . . . Postgres.
- тАУ . . . .
- тАУ . .
- тАУ , , . . . , , . .

. pg_stat_statements. тАУ , . тАУ .

default_statistics_target = 100, =1 000. , . 8 % .

, pgBadger pg_stat_statements. . , - 88 %. . , , . , . .

, ┬лALTER TABLE тАж ALTER COLUMN┬╗ 100 . , . . , , .


. CI- . .

: , , , . - - . , .
.

-, . production, . , , . .
, , , . . , . Postgres. . production . , , auto_explain.
, , . , , .
Nancy CLI тАУ ┬л ┬╗

. . . , . Open Source Nancy CLI. , .

Nancy тАФ Open Source, Gitlab. , . . help .
, . . , . тАУ delete 40 000 000 IO, , , . . . . , - , . production. .

? , . . , MacBook . , . . - instance , , .
EC2 Instance, . . , 500 i3 instance, i3-16-xlarge. 500 64 . 15 . . . , , тАУ 70 %, . . .

Postgres . - 12- .

. :
- Dump/sql-.
- тАУ PGDATA . -. , . , Google . production. .
- , , Postgres - . pgbench. pgbench. ┬лdb-pgbench┬╗. , scale. , .

:
- SQL . .
- . . . . , . pgreplay , Nancy.
- . , . , . pgbench .

- SQL - , . . - , , ANALAZE . , . , SQL.
- . , , , 100 . . , . , , . . pgdata . Postgres , . .

- , , pgstat***. тАУ pg_stat_statements, pg_stat_kcacke. , . pg_stat_bgwriter pgwriter , checkpoint , . . , shared_buffers , , .
- Postgres. тАУ .
- тАУ FlameGraphs.
- , pgreplay pgbench , . latency TPS. , .
- .
- CPU IO. EC2 instance , 100 instances 100 , 10 000 . , instance, - . . . sysbench , , . . , CPU IO .

?

, . , Open Source pgreplay . . , , .
duration timestamp. . тАУ ?

https://gist.github.com/NikolayS/08d9b7b4845371d03e195a8d8df43408
, . , . pg_stat_statements, ( ) , .
. , , , . , . , .
, 802 . , bytes_per sec тАУ 300 kB/s . , , .

! , . ┬лsyslog┬╗.

syslog, . pgbench, , .

тАУ . 161 000 TPS. syslog тАУ Ubuntu 16.04 37 000 TPS. , . . . , , .

CentOS 7, journald , . ., , 44 TPS.

, . , , . syslog, , .


pg_stat_statements. , . . pgbench тАУ ┬л-f┬╗.
┬л-f┬╗. ┬л@┬╗ , . . . , 10 % , 20 %. , production.

, production? ? . postgres-checkup. Open Source. .
. , . . . , , , . , , health_check. DBA, health_check. . . OKmeter, . Postgres. OKmeter.io тАУ , , . .
, , , , . CPU, IO , . . , , checkpoint, io checkpoint bgwriter . .
, - , - . OKmeter. , . - .
, , , . . production. , observing server, . : , , Postgres, - , production .
Postgres-checkup. -, . , тАУ . , . ? . . ? . , checkup, .
. . , .

┬л┬╗ тАУ 003 Postgres-checkup
. . 003. pg_stat_statements, total_time.
total_time , , , . . . ? . , , . . .
, , . .
, , , , , , 15 . , , .

? . Postgres_checkup : total-time, calls, rows, shared_blks_read . . , . pg_stat_statements , , reset. pg_stat_database , pg_stat_statements . , 1 000 000 , , .

, . , 56 . . total_time . , . . duration. duration, .
total_time per second тАУ . , , . . . , , . . , , , .
-, . тАУ тАУ . , CPU 100 %, , . . .
rows . , .
. shared_buffers shared_buffers. , , . , , , , , .
тАУ . . тАУ . , . 101 . , .
. 8 . . , . .
тАУ . calls. , 1 000 000. , . , , 0,01 %. . . , . тАУ 5 % . . . 5 % тАУ .
total_time . 14 % . тАУ 11 % . .
, . , , , , . . - , - . . 0, . . 20 %, .

. workload. , 80 % 90 %. 10-20 . pgbench. random. , , . Postgres 12 .
80-90 % total_time. ┬л@┬╗? calls, , , - . , . pgbench .

001 002.
001 тАУ . . . , , . . , . 75 % . . 10 , . .
002 тАУ , . . SELECT, INSERT, UPDATE, DELETE. SELECT FOR UPDATE, .
, SELECT тАУ 82 % , тАУ 74 % total_time. . . , .

: ┬л shared_buffers?┬╗. , тАУ , throughput , . . . TPS QPS.
. 311 select.

. . . , . production, 100% CPU. , , - , .
, 20 , 50 %. . . . , latency 20%- , . , .

:
- Database Lab.
- on demand, - тАУ . , , . . standing.
- . - , , . Nancy , , , .
- .
- Postgres. , . , .
- , , Postgres-checkup.

! .
.
, . . Nancy , ?
- . . , , .
. ? , . , , . . .
, , . . . . . , . , , . , . . .
. , . , ?
. . . . , . . - , - - . , тАУ .
, , . . !
! ! , . GSP?
. . , . . . run on localhost. instance . , . Getlab , GSP. , Google . ??? instances, . -, 70 % . 5-10 % , , . . . , . , , . Google . тАУ 24 . 5 . , .
! ! checkup. stat_statements?
. . тАУ , : . : total_time calls, . , . : . , .
, - ?
. . ?
, , , . - , ?
, .
. , , . , reset stat_statements , , , stat_statements . , , , .
-.
- .
, , тАУ queryid pg_stat_statements . queryid, , .
, .
id?
.
. . . , , 0 тАж
, , , , , stat_statemetns .
Pg_stat_statements . , track_utility = on, .
, .
java hibernate, , -. , 50-100 . - . тАУ pg_stat_statements.max .
, , . - . . . . pg_stat_statements.max. , 70 %. , , . reset. . 70, , , .
рд╣рд╛рдБред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 5,000 рд╣реИред рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЖрдорддреМрд░ рдкрд░ рд╣рд╛рдБред
рд╡реАрдбрд┐рдпреЛ:
PS рдореИрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ Postgres рдореЗрдВ рдЧреЛрдкрдиреАрдп рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдЖрдк PostgreSQL Anonymizer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпреЛрдЬрдирд╛ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
