الأخطاء النموذجية في التطبيقات التي تؤدي إلى الانتفاخ في postgresql. أندري سالنيكوف

أقترح أن تتعرف على فك شفرة تقرير بداية عام 2016 من قبل أندريه سالنيكوف "الأخطاء النموذجية في التطبيقات التي تؤدي إلى الانتفاخ في postgresql"


في هذا التقرير ، سأقوم بتحليل الأخطاء الرئيسية في التطبيقات التي تنشأ في مرحلة تصميم وكتابة رمز التطبيق. وسآخذ فقط تلك الأخطاء التي تؤدي إلى الانتفاخ في 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 , . , , .


أندري ، هناك سؤال. هذه الرسوم البيانية الرائعة التي عرضتها خلال العرض التقديمي ، هل هي نتيجة عمل ، نوع من فائدتك؟ ما الذي بنى الرسوم البيانية؟


هذه خدمة Okmeter .


هل هذا منتج تجاري؟


نعم. هذا منتج تجاري.


All Articles