рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдВрдбреНрд░реА рд╕рд╛рд▓рдирд┐рдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ 2016 рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ "рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реИрдХреНрд╕реНрд▓ рдореЗрдВ рдмреНрд▓реЛрдЯ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ"
рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдореИрдВ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЖрд╡реЗрджрди рдХреЛрдб рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ рдЬреЛ Postgresql рдореЗрдВ рдкреНрд░рд╕реНрдлреБрдЯрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрдВрдд рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рдереАрдВред
![](https://habrastorage.org/webt/j4/gz/vk/j4gzvk96v4s9_slh-p4gnciohqw.png)
рд╕рднреА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реБрдП рдЦреБрд╢реА рд╣реБрдИ! рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рд╕реЗ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рддрдХрдиреАрдХреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмреИрдХреЗрдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВред рдФрд░ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд┐рд╕ рдШрд╛рддрдХ рдФрд░ рдмреБрд░реЗ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреА рд╣реИрдВред
![](https://habrastorage.org/webt/9o/25/7s/9o257sxpafvagscbtymhpyqqakg.png)
рдЧрд▓рддрд┐рдпрд╛рдБ рдХреНрдпреЛрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ? рд╡реЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рд╕рдВрдпреЛрдЧ рд╕реЗ, рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рддрдВрддреНрд░ рдХреА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг рднреА рд╣реИ рдЬреЛ рдЖрдзрд╛рд░ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмреАрдЪ рдХреЗ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЖрдзрд╛рд░ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИред
, . , . , , . .
![](https://habrastorage.org/webt/ch/r5/vr/chr5vre616zbkrcrk_fcbaz60ak.png)
, . , . - .
![](https://habrastorage.org/webt/jx/m_/ng/jxm_nggqmszbi0aa-x0sl8lan-q.png)
: , 2 MB. . тАУ 2 000 .
![](https://habrastorage.org/webt/fx/hv/ed/fxhvedvfa8g_cbgyxmfeadzgiyq.png)
, , . 2 . тАУ , .
, . 2 MB. .
, . .
тАУ . , . , тАУ -. .
![](https://habrastorage.org/webt/7k/kd/_3/7kkd_32jzk8cmll4xgh4hgsgg78.png)
. . , , . , ( ) .
, , . тАУ 2 000 , .
![](https://habrastorage.org/webt/ln/oi/kk/lnoikk3gactr_rj8v3f0af_suro.png)
. - . :
- тАУ , . . . . , , - . тАУ , .
- , - exception. exception . .
- тАУ . . . , , .
?
, . bloat. , , . . 10 , 10 , 20 . .
, . , . , , 300 . , . . .
![](https://habrastorage.org/webt/72/q9/ca/72q9caetfeh_s85jaz2ekfjhsvw.png)
. . . . Postgres , - .
![](https://habrastorage.org/webt/dx/21/3d/dx213dhxb1rxroqoht-fjkl-flq.png)
? . . , , . . , . . тАУ , .
![](https://habrastorage.org/webt/7k/lc/rq/7klcrqmf767vibtfeyvfcnytqoi.png)
. , . . . .
, , , . , . - . , .
![](https://habrastorage.org/webt/_j/he/_i/_jhe_ix0hqxffvpmj0_j_dfdugc.png)
: ┬л ?┬╗. . , . . . . . - , .
![](https://habrastorage.org/webt/6u/zb/uu/6uzbuuhl9l1dzipogae1xmq087u.png)
, : . .
, . . , - . . . . .
, , . , .
![](https://habrastorage.org/webt/xa/vx/5u/xavx5up_mbqc52btb-_7nwssgaa.png)
, , , . . ?
. - . . , , . . , , , . , . - Postgres.
? - , : ┬л , , id , ┬╗. id. . , - , , , . .
, - . , , . , . . - , , . PostgreSQL.
![](https://habrastorage.org/webt/ff/5v/ir/ff5virwfhf3vlipk3m-d_paqfvg.png)
? ?
- , - , - . . , , id. id, , . , . , . .
. - , , . ? , . .
. , .
, : , , . ┬лbloat┬╗, . , 2 MB, 300 MB? .
![](https://habrastorage.org/webt/y5/sj/mu/y5sjmulskvpso8avoizedjlmspg.png)
?
- 150 . , .
- . , . , , - . , , .
- . , .
- , 10 , 10 , 10 , . . . 20 , 10 . , . - , , , , .
- : ┬л ?┬╗, , .
![](https://habrastorage.org/webt/mu/8n/es/mu8ness1qpe1lcxbssbsvzahea4.png)
, .
, . , - , - . pgstattuple. , , , .
, , . . . тАУ VACUUM FULL. , , . Pg_repack pgcompacttable тАУ . .
, . . , . .
, , , , , :
- . -. idle in transaction. , , - , .
- , , . . . ┬л┬╗ , .
![](https://habrastorage.org/webt/c5/ml/bb/c5mlbbr-awkevvdayxmrv_mo-o8.png)
, , VACUUM FULLтАЩ . production.
. .
![](https://habrastorage.org/webt/mf/v7/lp/mfv7lpm5hb875bsiz9d3bhbfltw.png)
, , , . , , . , , , , . . , , .
![](https://habrastorage.org/webt/x-/-v/zt/x--vztacibsriajurryybhx7x90.png)
. . , , . .
,
![](https://habrastorage.org/webt/er/je/qy/erjeqyfmzmqt6mamwovpkdce-_i.png)
- . , : , . , - ETL. . .
- , . , , . , , .
- .
- . .
![](https://habrastorage.org/webt/dt/20/wf/dt20wfy6x4wrt9r3pp8wiufxcvi.png)
? . -.
. . , . , , 2 . , . .
![](https://habrastorage.org/webt/jm/kx/bh/jmkxbhmxuqvkqdb6klcwnkbhkgq.png)
. , . .
![](https://habrastorage.org/webt/sp/qf/5i/spqf5iac8b7dka6dbsdgltikv40.png)
, . .
, . .
тАУ . , 3 . тАУ 3 . , , .
, . . тАУ hot_standby_feedback. . Hot_standby_feedback . . .
![](https://habrastorage.org/webt/8b/mb/dj/8bmbdjqpu-xvnqvvi-oo29dgttk.png)
-? - . , . , - -. , , . . . - .
![](https://habrastorage.org/webt/4e/ib/ne/4eibnen11hx3m6prbe55bwsua9c.png)
, . . . , .
![](https://habrastorage.org/webt/ob/hd/mz/obhdmztz6o_ks2_s5v47m3om9ki.png)
, , ?
- . , , . . . , Load Average .
- , . , . , .
- . raid. . . , , .
- : , . .
- - .
![](https://habrastorage.org/webt/1i/jz/8b/1ijz8bgp8qwrihslh52nmopyflk.png)
. . . , . , , , .
. - - . - . , -, , . . , .
![](https://habrastorage.org/webt/eo/bh/bg/eobhbgp0qi84jmah2rgt4qi4k_y.png)
, , . . , , . . , .
![](https://habrastorage.org/webt/vl/bl/97/vlbl97m63q5xbodozflngxns2va.png)
- , .
. . . , .
- hot_standby_feedback? , . - . - , .
- max_standby_streaming_delay? , тАУ . , - , . , . , , - . , , тАУ , .
- , , , hot_standby_feedback . . , . . , . . . , .
- , . streaming_delay. . , 6 , . .
:
. .
![](https://habrastorage.org/webt/pp/rt/v7/pprtv72jjqpv1h92ytkly6l2q8o.png)
, .
![](https://habrastorage.org/webt/50/ac/ws/50acwsegb4pnh0mnqhrhnkxpmfe.png)
- . . . , , , .
- . , , . , , , . : .
- . , Liquibase. . . . . , . . , . .
- , .
![](https://habrastorage.org/webt/3i/0p/zd/3i0pzdxv5jsip1tylx0ya4j3efq.png)
. , 15 GB. , , .
![](https://habrastorage.org/webt/af/8h/55/af8h55v9-pmhl4cxxeal6knig3m.png)
, , . , . . . 5 , , 7,5.
![](https://habrastorage.org/webt/eg/vq/wp/egvqwpk4ywpu3p7vvavc9cf8j3i.png)
.
, :
bloat, .
![](https://habrastorage.org/webt/yc/5g/0y/yc5g0y3mlnw53wtdmy4hcokdyfu.png)
, , , . .
![](https://habrastorage.org/webt/zx/uq/pd/zxuqpdxaazk54i9bbjo2gyxavq4.png)
, , . 7,5, . 2 , 1,5 , . . . тАУ . .
![](https://habrastorage.org/webt/ry/6a/6g/ry6a6g7_shhfpn9hrukkqgu1wza.png)
, . . .
- . .
- . DBA , DBA. . , , , .
- , , , , . . , :
- , .
- . ? -, . , - -.
- , , , .
- , ( ) , . тАУ .
- , , . - , .
- .
bloat .
.
![](https://habrastorage.org/webt/g4/3-/be/g43-beor7ucrudazmduy_nhiaig.png)
https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat.sql
https://github.com/dataegret/pg-utils/blob/master/sql/table_bloat_approx.sql
, .
, bloat, pgstattuple.
, . . .
- , bloat .
- , тАУ bloat bloat . , bloat Postgres . MVCC.
- 20 % bloat тАУ . . . .
, , , , .
, bloat:
- , . . VACUUM FULL. , . VACUUM FULL? . . , . . , : , , . VACUUM FULL , .
- pg_repack. VACUUM FULL, . , , , . VACUUM FULL. , , . , -.
- тАУ pgcompacttable. , . pgcompacttable , . , , , . , . . . .
.
![](https://habrastorage.org/webt/nf/-z/pi/nf-zpinx8zbhv1j-jh-59ve35pi.png)
bloat , :
, , . . !
! , . ? . . , , - . - joins. - , , - . . . , . ? , ? ?
тАУ , DBA.
.
PostgreSQL , pg_stat_activity, . , .
5 ?
cron . , . . . , . , . .
, ?
. . .
! pg_repack . , тАж
.
тАж . ?
, , . . pg_repack , . , - . .
. . - ?
, .
, VACUUM FULL?
VACUUM FULL, , . , . pg_repack . , , .
! . , . . . тАУ . - ?
. Postgres . . , . id , , . , . - . , . .
. . . , . . - , .
, . Postgres . . , , tos-. : , json. . bloat, . . . .
! statement timeout?
. . . . , , . . . . cron, . , . , 10 . . pg_stat_activity.
! . , . - exception, rollback . . . , . , PostgreSQL , ?
, , , ORM, . . auto commit on, , .
. . ?
. . auto commit on. . , - . ┬лstart transaction┬╗ ┬лend transaction┬╗, .
! ! , , - . - , ?
- .
, DBA , . .
, - , .
?
reserved space, . . , , . , . тАУ , . - , .
?
. , , , . , , . .
! . -, , , , . , . ?
.
?
. , pg_rapack, pgcompacttable. , . VACUUM FULL , , . . .
. , . , тАУ , тАУ .
? , . . , ? - . , , , , . , , , , . PostgreSQL , . , , .
рдПрдВрдбреНрд░реА, рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рдпреЗ рдЕрджреНрднреБрдд рд░реЗрдЦрд╛рдВрдХрди, рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЖрдкрдХреА рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛? рдХреНрдпрд╛ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рдпрд╛?
рдпрд╣ рдПрдХ рдУрдХреЗрдореАрдЯрд░ рд╕реЗрд╡рд╛ рд╣реИ ред
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рдж рд╣реИ?
рд╣рд╛рдБред рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рдж рд╣реИред