Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

Utangulizi wa falsafa

Kama unavyojua, kuna njia mbili tu za kutatua shida:

  1. Njia ya uchambuzi au njia ya kukata, au kutoka kwa jumla hadi maalum.
  2. Njia ya usanisi au njia ya utangulizi, au kutoka kwa mahususi hadi kwa jumla.

Ili kutatua tatizo la "kuboresha utendaji wa hifadhidata", inaweza kuonekana kama hii.

Uchambuzi - tunachambua shida katika sehemu tofauti na, kwa kuzitatua, tunajaribu kuboresha utendaji wa hifadhidata kwa ujumla.

Kwa mazoezi, uchambuzi unaonekana kama hii:

  • Tatizo linatokea (tukio la utendaji)
  • Kukusanya taarifa za takwimu kuhusu hali ya hifadhidata
  • Kutafuta vikwazo
  • Tunatatua shida kutoka kwa vikwazo

Vikwazo vya hifadhidata — miundombinu (CPU, Kumbukumbu, Diski, Mtandao, Mfumo wa Uendeshaji), mipangilio (postgresql.conf), maswali:

Miundombinu: Uwezekano wa ushawishi na mabadiliko kwa mhandisi ni karibu sufuri.

Mipangilio ya Hifadhidata: uwezekano wa mabadiliko ni kubwa kidogo kuliko katika kesi ya awali, lakini kama sheria bado ni vigumu sana, hasa katika mawingu.

Maombi kwa hifadhidata: nafasi pekee ya ujanja.

Kipindi - tunaboresha utendakazi wa sehemu mahususi, tukitarajia kwamba utendakazi wa hifadhidata utaimarika kama matokeo.

Utangulizi wa sauti au kwa nini hii yote ni muhimu

Ni mchakato gani wa kusuluhisha matukio ya utendakazi ikiwa utendaji wa hifadhidata haufuatiliwi:

Mteja - "Kila kitu ni mbaya kwetu, inachukua muda mrefu sana, tufanyie kitu kizuri"
Mhandisi - "ni mbaya kiasi gani?"
Mteja - "ndivyo ilivyo sasa (saa moja iliyopita, jana, mara ya mwisho ilivyokuwa), polepole"
Mhandisi - "ilikuwa nzuri lini?"
Mteja - "wiki (wiki mbili) zilizopita haikuwa mbaya. "(Ni bahati)
Mteja - "Sikumbuki wakati ilikuwa nzuri, lakini sasa ni mbaya" (Jibu la kawaida)

Matokeo yake ni picha ya classic:

Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

Nani wa kulaumiwa na nini cha kufanya?

Sehemu ya kwanza ya swali ni rahisi kujibu - mhandisi wa DBA ndiye anayelaumiwa kila wakati.

Sehemu ya pili pia sio ngumu sana kujibu - unahitaji kutekeleza mfumo wa ufuatiliaji wa utendaji wa hifadhidata.

Swali la kwanza linatokea - nini cha kufuatilia?

Njia ya 1. Tutafuatilia KILA KITU

Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

Upakiaji wa CPU, idadi ya shughuli za kusoma/kuandika kwa diski, saizi ya kumbukumbu iliyotengwa, na megatoni nyingine ya vihesabio tofauti ambavyo mfumo wowote wa ufuatiliaji wa kufanya kazi zaidi au mdogo unaweza kutoa.

Matokeo yake ni rundo la grafu, majedwali ya muhtasari, na arifa za barua pepe zinazoendelea na mhandisi mwenye shughuli nyingi 100% akisuluhisha rundo la tikiti zinazofanana, hata hivyo, kama sheria, na maneno ya kawaida - "Toleo la muda. Hakuna hatua zinazohitajika." Lakini kila mtu ana shughuli nyingi, na daima kuna kitu cha kuonyesha mteja - kazi inaendelea kikamilifu.

Njia ya 2. Fuatilia tu kile kinachohitajika, na kisichohitajika hauhitaji kufuatiliwa

Unaweza kufuatilia, tofauti kidogo, vyombo na matukio pekee:

  • Ambayo Mhandisi wa DBA Anaweza Kuathiri
  • Ambayo kuna algorithm ya vitendo wakati tukio linatokea au huluki inabadilika.

Kulingana na dhana hii na kukumbuka "Utangulizi wa falsafa"ili kuzuia kurudia mara kwa mara"Utangulizi wa sauti au kwa nini hii yote ni muhimu"Itakuwa vyema kufuatilia utendakazi wa maswali binafsi kwa ajili ya uboreshaji na uchambuzi, ambayo inapaswa hatimaye kusababisha utendakazi bora wa hifadhidata nzima.

Lakini ili kuboresha swala zito linaloathiri utendaji wa hifadhidata kwa ujumla, lazima kwanza uipate.

Kwa hivyo, maswali mawili yanayohusiana yanaibuka:

  • ombi ambalo linachukuliwa kuwa gumu
  • jinsi ya kutafuta maswali magumu.

Ni wazi, swala zito ni swala ambalo hutumia rasilimali nyingi za OS kupata matokeo.

Hebu tuendelee kwenye swali la pili - jinsi ya kutafuta na kufuatilia maswali mazito?

PostgreSQL ina uwezo gani wa ufuatiliaji wa hoja?

Ikilinganishwa na Oracle, kuna uwezekano mdogo, lakini bado kuna kitu kinaweza kufanywa.

Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

PG_STAT_STATEMENTS

Ili kutafuta na kufuatilia maswali mazito katika PostgreSQL, kiendelezi cha kawaida cha pg_stat_statements kinakusudiwa.

Baada ya kusakinisha kiendelezi, mtazamo wa jina moja unaonekana kwenye hifadhidata inayolengwa, ambayo inapaswa kutumika kwa madhumuni ya ufuatiliaji.

Safu lengwa za pg_stat_statements za kuunda mfumo wa ufuatiliaji:

  • swali Msimbo wa ndani wa heshi uliokokotolewa kutoka kwa mti wa uchanganuzi wa opereta
  • max_time Muda wa juu zaidi uliotumika kwenye taarifa, kwa milisekunde

Kwa kukusanya na kutumia takwimu kwenye safu hizi mbili, unaweza kuunda mfumo wa ufuatiliaji.

Jinsi pg_stat_statements inatumiwa kufuatilia utendaji wa PostgreSQL

Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

Ili kufuatilia utumiaji wa utendaji wa hoja:
Kwa upande wa hifadhidata inayolengwa - mwonekano wa pg_stat_statements
Kutoka upande seva na ufuatiliaji wa hifadhidata - seti ya hati za bash na jedwali za huduma.

Hatua ya 1 - ukusanyaji wa data ya takwimu

Kwenye seva pangishi ya ufuatiliaji wa cron, hati inazinduliwa mara kwa mara ambayo inakili maudhui ya mwonekano wa pg_stat_statements kutoka kwa hifadhidata lengwa hadi jedwali la pg_stat_history katika hifadhidata ya ufuatiliaji.

Hii inaunda historia ya utekelezaji wa hoja binafsi ambayo inaweza kutumika kutoa ripoti za utendakazi na kusanidi vipimo.

Hatua ya 2 - kusanidi vipimo vya utendaji

Kulingana na data iliyokusanywa, tunachagua maswali ambayo utekelezaji wake ni muhimu/muhimu zaidi kwa mteja (programu). Kwa makubaliano na mteja, tunaweka thamani za vipimo vya utendakazi kwa kutumia sehemu za queryid na max_time.

Matokeo - kuanza kwa ufuatiliaji wa utendaji

  1. Hati ya ufuatiliaji, inapoendeshwa, hukagua vipimo vya utendakazi vilivyosanidiwa kwa kulinganisha thamani ya max_time ya kipimo na thamani kutoka kwa mwonekano wa pg_stat_statements katika hifadhidata lengwa.
  2. Ikiwa thamani katika hifadhidata inayolengwa inazidi thamani ya kipimo, onyo hutolewa (tukio katika mfumo wa tikiti)

Chaguo la ziada 1

Historia ya mpango wa hoja

Ili kusaidia kutatua matukio ya utendakazi baadaye, ni vyema kuwa na historia ya kubadilisha mipango ya utekelezaji wa hoja.

Jedwali la huduma ya log_query hutumiwa kuhifadhi historia. Jedwali huwekwa wakati wa kuchambua faili ya kumbukumbu ya PostgreSQL iliyopakiwa. Kwa kuwa faili ya logi, tofauti na mwonekano wa pg_stat_statements, ina maandishi kamili na maadili ya vigezo vya utekelezaji, na sio maandishi ya kawaida, inawezekana kuweka sio tu wakati na muda wa maombi, lakini pia kuhifadhi mipango ya utekelezaji kwa sasa. wakati.

Chaguo la ziada 2

Mchakato unaoendelea wa kuboresha utendaji

Ufuatiliaji wa maswali ya mtu binafsi kwa ujumla haukusudiwi kutatua tatizo la kuendelea kuboresha utendakazi wa hifadhidata kwa ujumla, kwani inafuatilia na kutatua matatizo ya utendaji kwa maswali ya mtu binafsi pekee. Hata hivyo, unaweza kupanua mbinu na kusanidi maswali ya ufuatiliaji kwa hifadhidata zote.

Ili kufanya hivyo, unahitaji kuingiza vipimo vya ziada vya utendaji:

  • Katika siku za hivi karibuni
  • Kwa kipindi cha msingi

Hati huchagua hoja kutoka kwa mwonekano wa pg_stat_statements katika hifadhidata lengwa na inalinganisha thamani ya muda_max_wastani wa thamani_ya_muda, katika hali ya kwanza kwa siku za mwisho au kwa muda uliochaguliwa (msingi), katika hali ya pili.

Kwa hivyo, katika kesi ya uharibifu wa utendaji kwa ombi lolote, onyo litatolewa moja kwa moja, bila uchambuzi wa mwongozo wa ripoti.

Usanisi una uhusiano gani nayo?

Katika mbinu iliyoelezewa, kama njia ya usanisi inavyopendekeza, kwa kuboresha sehemu za kibinafsi za mfumo, tunaboresha mfumo kwa ujumla.

  • Hoja iliyotekelezwa na hifadhidata - muhtasari
  • Ombi lililobadilishwa - antithesis
  • Kubadilisha hali ya mfumo - awali

Usanifu kama mojawapo ya mbinu za kuboresha utendaji wa PostgreSQL

Uendelezaji wa mfumo

  • Viendelezi vya takwimu zilizokusanywa kwa kuongeza historia kwa mwonekano wa mfumo wa pg_stat_activity
  • Kupanua takwimu zilizokusanywa kwa kuongeza historia kwa takwimu za majedwali mahususi zinazoshiriki katika hoja
  • Kuunganishwa na mfumo wa ufuatiliaji wa wingu wa AWS
  • Na bado, unaweza kuja na kitu ...

Chanzo: mapenzi.com

Nunua upangishaji wa kuaminika wa tovuti zilizo na ulinzi wa DDoS, seva za VPS VDS 🔥 Nunua upangishaji wa tovuti unaoaminika kwa ulinzi wa DDoS, seva za VPS VDS | ProHoster