рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реИрдХреНрд╕реНрд▓ рдореЗрдВ рдмреНрд▓реЛрдЯ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВред рдПрдВрдбреНрд░реЗ рд╕рд╛рд▓рдирд┐рдХреЛрд╡

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдВрдбреНрд░реА рд╕рд╛рд▓рдирд┐рдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ 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 , . , , .


рдПрдВрдбреНрд░реА, рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИред рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рджреМрд░рд╛рди рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рдпреЗ рдЕрджреНрднреБрдд рд░реЗрдЦрд╛рдВрдХрди, рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЖрдкрдХреА рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛? рдХреНрдпрд╛ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рдпрд╛?


рдпрд╣ рдПрдХ рдУрдХреЗрдореАрдЯрд░ рд╕реЗрд╡рд╛ рд╣реИ ред


рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рдж рд╣реИ?


рд╣рд╛рдБред рдпрд╣ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдЙрддреНрдкрд╛рдж рд╣реИред


All Articles