Erros típicos em aplicativos que levam ao inchaço no postgresql. Andrey Salnikov

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.


All Articles