Sugiro que vocĂŞ se familiarize com a decodificação do relatĂłrio do inĂcio de 2016 por Andrey Salnikov "Erros tĂpicos em aplicativos que levam ao inchaço no postgresql"
Neste relatório, analisarei os principais erros nos aplicativos que surgem no estágio de criação e gravação do código do aplicativo. E levarei apenas os erros que levam ao inchaço no Postgresql. Como regra, este é o começo do fim do desempenho do seu sistema como um todo, embora inicialmente não houvesse pré-requisitos para isso.

Fico feliz em receber todos! Este relatório não é tão técnico quanto o anterior do meu colega. Este relatório é destinado a desenvolvedores de sistemas de back-end principalmente porque temos um número bastante grande de clientes. E todos cometem os mesmos erros. Eu vou falar sobre eles. Vou explicar o quão fatal e ruim esses erros levam.

Por que os erros sĂŁo cometidos? Eles sĂŁo executados por dois motivos: por acaso, talvez seja tambĂ©m devido Ă ignorância de algum mecanismo que ocorre no nĂvel entre a base e o aplicativo, bem como na prĂłpria base.
, . , . , , . .

, . , . - .

: , 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 , . , , .
Andrey, há uma pergunta. Esses gráficos maravilhosos que você mostrou durante a apresentação são o resultado do trabalho, algum tipo de utilidade? O que construiu os gráficos?
Este é um serviço Okmeter .
Este Ă© um produto comercial?
Sim. Este Ă© um produto comercial.