Erreurs typiques dans les applications qui conduisent Ă  des ballonnements dans postgresql. Andrey Salnikov

Je vous suggÚre de vous familiariser avec le décodage du rapport du début de 2016 par Andrey Salnikov "Erreurs typiques dans les applications qui conduisent à des ballonnements en postgresql"


Dans ce rapport, j'analyserai les principales erreurs dans les applications qui surviennent au stade de la conception et de l'écriture du code d'application. Et je ne prendrai que les erreurs qui conduisent à des ballonnements dans Postgresql. En rÚgle générale, il s'agit du début de la fin des performances de votre systÚme dans son ensemble, bien qu'au départ, aucune condition préalable n'était visible.



Heureux d'accueillir tout le monde! Ce rapport n'est pas aussi technique que le prĂ©cĂ©dent de mon collĂšgue. Ce rapport est destinĂ© aux dĂ©veloppeurs de systĂšmes backend principalement parce que nous avons un nombre assez important de clients. Et ils font tous les mĂȘmes erreurs. Je vais vous en parler. J'expliquerai Ă  quoi conduisent ces erreurs fatales et mauvaises.



Pourquoi commet-on des erreurs? Ils sont effectuĂ©s pour deux raisons: par hasard, c'est peut-ĂȘtre aussi Ă  cause de l'ignorance d'une sorte de mĂ©canisme qui se produit au niveau entre la base et l'application, ainsi que dans la base elle-mĂȘme.


, . , . , , . .



, . , . - .



: , 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, il y a une question. Ces merveilleux graphiques que vous avez montrés lors de la présentation sont le résultat d'un travail, d'une sorte d'utilité? Qu'est-ce qui a construit les graphiques?


Il s'agit d'un service Okmeter .


S'agit-il d'un produit commercial?


Oui. Ceci est un produit commercial.


All Articles