рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЕрд▓реЗрдХреНрд╕рдИ рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ 2019 рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ - "рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде
рд╕рдордп-рд╕рдордп рдкрд░, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рдЬрд┐рддрдиреА рддреЗрдЬрд╝реА рд╕реЗ рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рд╣рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрддрдиреЗ рд╣реА рдЖрднрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВред pgCenter CLI рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдпрд╣рд╛рдВ рдФрд░ рдЕрдм рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИред рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ pgCenter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреИрд╕реЗ рдФрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рдП:
- рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ Postgres рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ;
- рдЬрд▓реНрджреА рд╕реЗ рдмреБрд░реЗ рдЧреНрд░рд╛рд╣рдХ рдвреВрдВрдвреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЦрддреНрдо рдХрд░реЗрдВ;
- рднрд╛рд░реА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ;
- рдФрд░ pgCenter рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЧреБрд░ред

, . Data Egret. . , PostgreSQL.
, pgCenter , .

. . Linux, , . - Postgres'. Postgres . PostgreSQL DBA. , Postgres . .

. : Slack, Telegram. - . .

, , Linix. . , Linux . , , .

, Postgres. Postgres. - Postgres'. Postgres. Postgres.

Postgres . Postgres Postgres. , Postgres (views), .
. . . - .

- , , , , , . - . : ┬л ?┬╗, ┬л ?┬╗ ┬л ?┬╗. , .

, , , , . - pgCenter.
. , TOP- .
- , C . .. . Golang, , . .
Go pgCenter . . , , , targz, deb- rpm- . .. - , make, GCC Golang. , , .

pgCenter , top- ( ).

. , . wait_events. , -.

PSQL. Postgres, PSQL Postgres. pgCenter , ┬лpgcenter top┬╗ postgres - (-, ).

, - , , , , PSQL, , , .

, UNIX-, . . go' , pgCenter , UNIX.

, libpq. , , pg_stat_statements pgCenter , . .

(pgcenter top). , , . , - . , , . . , pgCenter, top-, .

тАУ . .

тАУ , Postgres. - , Postgres .

тАУ (views). stat-, Postgres, .

, . -, . . , , , , . .
, . (regexp). . , , - : .

, pgCenter. тАУ - .

, USE . . - , .

. . , Top, . : , ..

, : , , .

, , swap. swap, , swap. тАУ .

- : ┬л - ?┬╗. . , .

, тАУ - Postgres. uptime. , uptime Postgres тАУ , , . , Postgres .

. , Postgres, . , , . . . .

, , . , , . , . , . - .

, Postgres MVCC . MVCC . , . .

'd'.
, pg_stat_database , ┬лrollbacks┬╗. ┬лROLLBACK┬╗, /. (constraints), . . , .
pg_stat_database (conflicts) (deadlocks). , , , - .

, pgCenter. , . -, :
top
vmstat
iostat
nicstat
pg_stat_activity
pg_stat_statements
, .

, , - .

. , , . . . CPU usage тАУ 85 %. , - . , . , Postgres. Postgres , .

, , 38 , - . state: waiting idle_xact. Waiting 0, . . . , 20 idle . , (xact_age) тАУ . , . тАУ 15 . , .

(: pg_stat_statements. pg_stat_statements "x", . "shift + x" pg_stat_statements_timings. "pg_stat_statements not available on this database", pg_stat_statements postgres postgres: create extension pg_stat_statements;
)
, () . , . pg_stat_statements. contrib. : , . contrib , . , -. Postgres тАУ pg_stat_statements.
, . , . . , CPU pg_stat_statements. тАУ 2 . SELECT COUNT (*) FROM "game_competition_events"
. . . , , , , . , - , , -. , .
. total_time. total_time , , /: . , ┬лt_cpu_t┬╗. . .

, . , , ┬лcpu_t┬╗, , , . snapshot , , . . SELECT "courses_logs".* FROM course_logs
. , 5 . , , , , .
┬лcalls┬╗, , . . . . .

, . Top pg_stat_activity pg_stat_statements. pgCenter .

тАУ -. , , , -.

. , - тАУ 27 %. , -.

, ┬лbackground worker┬╗. , .

┬лwait_event┬╗. , -. . . .

-. 'B' iostat. . , 99 %. тАУ , NVME. , latency.

latency, latency 1 . .
, . , SSD NVME- - , , latency. latency, , - .

, -. pg_stat_statements , -. ┬лt_read_t┬╗, . . , .
. ┬лread_t┬╗. , -, .
/ track_io_timing.
, , . pgCenter queryid. . , pg_stat_statements. . . . . pgCenter . queryid. pgCenter .

:
тАУ summary, , pg_stat_statements. , , -.
, , summary. .
, , .
, , .

, , , top, iostat pg_stat_activity, pg_stat_statements. , .

тАУ , -. Postgres , .
:
Checkpointer pocess.
WAL writer process.
Autovacuum workers.
Background workers.
pgCenter , , .

, : - , . , , .

, , . - .

.

. , , 22 21 . , - .

wait_event , , . . . - - , , .

, (idle in transaction). , 6 . .

, , 10- , . , , 7 . 10- .

wait_etype, wait_event , , , (Client:Client Read). , - , - . , , - , , . , , .
тАУ . : pg_cancel_backend pg_terminate_backend. , backend. pgCenter . backend pid, .

:
Pg_stat_activity.
Pg_stat_statements.
Pg_cancel_backend ().
Pg_terminate_backend ().

, . , , .
. , . - . , ( , , ). - , , idle transaction . тАФ .

тАУ . , (deadlocks) .

. ALTER TABLE, , , . . , , 11- . Postgres, . ALTER .

тАУ CREATE INDEX CONCURRENTLY, - , , . .

, .. , production Postgres , .

pg_stat_replication. , Postgres, .
pgCenter pg_stat_replication. , , .
5 . .

, , . 2 walreceiver, . . 2 .

, , , . , , - . , , тАУ - .
, pg_stat_replication , . 1,5 GB. replay_lag тАУ 2 . . . 2- . 2 , . . .

, , 2 pg_basebackup 1 pg_receivewal. Pg_basebackup тАУ . pg_stat_replication. pg_receivewal тАУ , . . . , , . - , .

pg_stat_replication . . , 5 . : pending, write, flush, replay, total_lag. . . .
Pending тАУ , . .
Write тАУ , , . . .
Flush тАУ , .
Replay тАУ . .
Total_lag тАУ .
, , , - , . , ; , ; , , .

, . . , , .

тАУ , . . тАУ , . Postgres, . , - .

:
pg_stat_replication.
pg_wal_lsn_diff().
pg_current_wal_lsn().
pg_last_commited_xact().

, .

, top . тАУ Seq Scan, update, delete, insert, .

. . .

. , , . , .

, , pg_stat_progress_vacuum 9.6. , , , , , . pg_stat_progress_vacuum тАУ . , . , , , . , .

, . , , . . postgresql.conf, - reload. , , .
. , , . . , .
psql, . . psql , pgCenter. - , pgCenter, psql .

top- тАУ , pgCenter. top , pgCenter. record report.
, . . report , , Top. тАФ .

-. - , record. . .

wait_eventтАЩ, , .

: SELECT . , , , 44 % , - , тАУ - , .

: VACUUM FULL. , VACUUM FULL IO , 12 %. , , .
! . . . , , pg_stat_statements, query . - - ?
, . , , , , - , . , , - . . - . . . , , -. , , . , , .
. , rollbacks. rollbacks, rollbacks, .
, , , pg_stat_database . rollbacks .
pg_stat_statements rollbacks, .
, . . `SELECT FROM pg_stat_database JNOIN pg_stat_statements` pg_stat_statements, rollbacks , . . , 10-20 .
, ! Postgres ?
9.0-9.1, C . - , , , , . Go , 9.4. 9.4 , SELECTтАж where filter. . (9.3) . . , , . , , , , .
, ! , TOP. .
, , . , тАУ . less ( ), тАУ , .
. TOP ?
. , , , . , . , . , , .
! . , . , 85% CPU usage, , . pg_stat_statements. . , .
. CPU . тАУ t_all_t. pg_stat_statements. , . , . t . . . ┬лt┬╗. . . . , .
. , pg_stat_statements, ?
pg_stat_statements real time.
, pg_stat_statements , 85 CPU usage тАУ .
, . , pg_stat_statements . , , , 10 , . 10 тАУ , , , atop. atop ?
, . pg_stat_statements, CPU, , , pg_stat_statements.
. , Grafana, . . . pgCenter тАУ , , , , .
. pgCenter atop , Grafana?
pgCenter report pgCenter record, . . . , , . . ., , pgCenter report , , pg_stat_database sar . . atop, .
, ! , Postgres, , , . , . ? ?
10 . ┬л-f┬╗, . , , , 10 . , pg_stat_activity , . . , . , , 50 . , , 1-2 %. . . , , - 0,5-2 % .
. , - .
, . , , 0,04 % . , , . - .
.
, .
, ! . wait_event Running тАУ ?
.
CPU.
, . . . , wait_events PID , , backend - , , - . Running, , . . .
CPU?
, CPU, . . - . .
! ! - , , Ubuntu?
C, . , , . PDGD Ubuntu. Launchpad , - . . , . Go -, dev-. . , travis-ci build, build . . . Realeses, . wget, , tarтАЩ , .
Goreleaser, . .
, GO . , . , SOLID. , , Goreleaser , , , . CтАЩ , . , Realeses. !
Updated. Goreleaser , !
, queryid. queryid. , . ?
, . , - . , . - . . . , . . . . , , .
, , queryid тАУ .
рд╣рд╛рдВ, рд╢реБрд░реВ рдореЗрдВ рдХреЙрд▓рдо рдХреА рдЪреМрдбрд╝рд╛рдИ рдЙрдЫрд▓реА рдФрд░ рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрд╡-рд╢рд╛рдЦрд╛ рдореЗрдВ рддрдп рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рд╕реНрдЯрд░-рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИред рдлрд░рд╡рд░реА рдХреЗ рдордзреНрдп рдореЗрдВ, рдореИрдВ рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрдлрд┐рд▓рд░ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдмрд╕ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЙрд▓рдо рдЪреМрдбрд╝рд╛рдИ рд╣реЛрдЧреАред
рдорд╣рд╛рдиред
рд╣рд╛рдВ, рдЖрдк рддреАрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреМрдбрд╝рд╛рдИ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзрдиреНрдпрд╡рд╛рдж рдПрд▓реЗрдХреНрд╕реА!
рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рд╡реАрдбрд┐рдпреЛ: