Errores típicos en aplicaciones que provocan hinchazón en postgresql. Andrey Salnikov

Le sugiero que se familiarice con la decodificación del informe de principios de 2016 de Andrey Salnikov "Errores típicos en aplicaciones que provocan hinchazón en postgresql"


En este informe, analizaré los principales errores en las aplicaciones que surgen durante el diseño y la escritura del código de la aplicación. Y tomaré solo aquellos errores que conducen a la hinchazón en Postgresql. Como regla general, este es el principio del fin del rendimiento de su sistema como un todo, aunque inicialmente no se veían requisitos previos para esto.



Me alegro de dar la bienvenida a todos! Este informe no es tan técnico como el anterior de mi colega. Este informe está dirigido a desarrolladores de sistemas de back-end, principalmente porque tenemos un número bastante grande de clientes. Y todos cometen los mismos errores. Te contaré sobre ellos. Explicaré a qué fatal y mal conducen estos errores.



¿Por qué se cometen errores? Se realizan por dos razones: por casualidad, tal vez también se deba a la ignorancia de algún mecanismo que ocurre en el nivel entre la base y la aplicación, así como en la base misma.


, . , . , , . .



, . , . - .



: , 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, hay una pregunta. Estos maravillosos gráficos que mostró durante la presentación, ¿son el resultado del trabajo, algún tipo de utilidad? ¿Qué construyó los gráficos?


Este es un servicio de Okmeter .


¿Es este un producto comercial?


Si. Este es un producto comercial.


All Articles