рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдВрдбреНрд░реА рд╕рд╛рд▓рдирд┐рдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ 2016 рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ "рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реИрдХреНрд╕реНрд▓ рдореЗрдВ рдмреНрд▓реЛрдЯ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ"
рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдореИрдВ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЖрд╡реЗрджрди рдХреЛрдб рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ рдЬреЛ Postgresql рдореЗрдВ рдкреНрд░рд╕реНрдлреБрдЯрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЕрдВрдд рдХреА рд╢реБрд░реБрдЖрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рдереАрдВред

рд╕рднреА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддреЗ рд╣реБрдП рдЦреБрд╢реА рд╣реБрдИ! рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рд╕реЗ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рддрдХрдиреАрдХреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмреИрдХреЗрдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВред рдФрд░ рд╡реЗ рд╕рднреА рдПрдХ рд╣реА рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд┐рд╕ рдШрд╛рддрдХ рдФрд░ рдмреБрд░реЗ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреА рд╣реИрдВред

рдЧрд▓рддрд┐рдпрд╛рдБ рдХреНрдпреЛрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ? рд╡реЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рд╕рдВрдпреЛрдЧ рд╕реЗ, рд╢рд╛рдпрдж рдпрд╣ рдХреБрдЫ рддрдВрддреНрд░ рдХреА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг рднреА рд╣реИ рдЬреЛ рдЖрдзрд╛рд░ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмреАрдЪ рдХреЗ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЖрдзрд╛рд░ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИред
, . , . , , . .

, . , . - .

: , 2 MB. . тАУ 2 000 .

, , . 2 . тАУ , .
, . 2 MB. .
, . .
тАУ . , . , тАУ -. .

. . , , . , ( ) .
, , . тАУ 2 000 , .

. - . :
- тАУ , . . . . , , - . тАУ , .
- , - exception. exception . .
- тАУ . . . , , .
?
, . bloat. , , . . 10 , 10 , 20 . .
, . , . , , 300 . , . . .

. . . . Postgres , - .

? . . , , . . , . . тАУ , .

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

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

, : . .
, . . , - . . . . .
, , . , .

, , , . . ?
. - . . , , . . , , , . , . - Postgres.
? - , : ┬л , , id , ┬╗. id. . , - , , , . .
, - . , , . , . . - , , . PostgreSQL.

? ?
- , - , - . . , , id. id, , . , . , . .
. - , , . ? , . .
. , .
, : , , . ┬лbloat┬╗, . , 2 MB, 300 MB? .

?
- 150 . , .
- . , . , , - . , , .
- . , .
- , 10 , 10 , 10 , . . . 20 , 10 . , . - , , , , .
- : ┬л ?┬╗, , .

, .
, . , - , - . pgstattuple. , , , .
, , . . . тАУ VACUUM FULL. , , . Pg_repack pgcompacttable тАУ . .
, . . , . .
, , , , , :
- . -. idle in transaction. , , - , .
- , , . . . ┬л┬╗ , .

, , VACUUM FULLтАЩ . production.
. .

, , , . , , . , , , , . . , , .

. . , , . .
,

- . , : , . , - ETL. . .
- , . , , . , , .
- .
- . .

? . -.
. . , . , , 2 . , . .

. , . .

, . .
, . .
тАУ . , 3 . тАУ 3 . , , .
, . . тАУ hot_standby_feedback. . Hot_standby_feedback . . .

-? - . , . , - -. , , . . . - .

, . . . , .

, , ?
- . , , . . . , Load Average .
- , . , . , .
- . raid. . . , , .
- : , . .
- - .

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

, , . . , , . . , .

- , .
. . . , .
- hot_standby_feedback? , . - . - , .
- max_standby_streaming_delay? , тАУ . , - , . , . , , - . , , тАУ , .
- , , , hot_standby_feedback . . , . . , . . . , .
- , . streaming_delay. . , 6 , . .
:
. .

, .

- . . . , , , .
- . , , . , , , . : .
- . , Liquibase. . . . . , . . , . .
- , .

. , 15 GB. , , .

, , . , . . . 5 , , 7,5.

.
, :
bloat, .

, , , . .

, , . 7,5, . 2 , 1,5 , . . . тАУ . .

, . . .
- . .
- . DBA , DBA. . , , , .
- , , , , . . , :
- , .
- . ? -, . , - -.
- , , , .
- , ( ) , . тАУ .
- , , . - , .
- .
bloat .
.

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 , . , , , . , . . . .
.

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 , . , , .
рдПрдВрдбреНрд░реА, рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рдпреЗ рдЕрджреНрднреБрдд рд░реЗрдЦрд╛рдВрдХрди, рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЖрдкрдХреА рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛? рдХреНрдпрд╛ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рдпрд╛?
рдпрд╣ рдПрдХ рдУрдХреЗрдореАрдЯрд░ рд╕реЗрд╡рд╛ рд╣реИ ред
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рдж рд╣реИ?
рд╣рд╛рдБред рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рдж рд╣реИред