Fiosrúcháin bunachar sonraí a bharrfheabhsú ag baint úsáide as an sampla de sheirbhís B2B do thógálaithe

Conas líon na bhfiosruithe chuig an mbunachar sonraí a mhéadú 10 n-uaire gan bogadh chuig freastalaí níos táirgiúla agus feidhmiúlacht an chórais a chothabháil? Inseoidh mé duit conas a dhéileálamar leis an laghdú ar fheidhmíocht ár mbunachar sonraí, conas a rinneamar barrfheabhsú ar cheisteanna SQL chun freastal ar an oiread úsáideoirí agus is féidir agus gan costas acmhainní ríomhaireachta a mhéadú.

Déanaim seirbhís chun próisis ghnó a bhainistiú i gcomhlachtaí foirgníochta. Oibríonn thart ar 3 mhíle cuideachta linn. Oibríonn níos mó ná 10 míle duine lenár gcóras gach lá ar feadh 4-10 uair an chloig. Réitíonn sé fadhbanna éagsúla pleanála, fógra, rabhaidh, bailíochtaithe... Úsáidimid PostgreSQL 9.6. Tá thart ar 300 tábla againn sa bhunachar sonraí agus faightear suas le 200 milliún fiosrúchán (10 míle ceist éagsúil) gach lá. Ar an meán ní mór dúinn 3-4 iarratas in aghaidh an tsoicind, ag na chuimhneacháin is gníomhaí níos mó ná 10 míle iarratas in aghaidh an tsoicind. Is iad OLAP formhór na gceisteanna. Tá i bhfad níos lú breisithe, modhnuithe agus scriosadh, rud a chiallaíonn go bhfuil an t-ualach OLTP sách éadrom. Chuir mé na huimhreacha seo go léir ar fáil ionas gur féidir leat scála ár dtionscadal a mheas agus a thuiscint cé chomh húsáideach is féidir lenár dtaithí a bheith duit.

Pictiúr a haon. Lyrical

Nuair a thosaigh muid ag forbairt, níor smaoinigh muid i ndáiríre ar an gcineál ualach a thitfeadh ar an mbunachar sonraí agus cad a dhéanfaimis dá stopfadh an freastalaí ag tarraingt. Agus an bunachar sonraí á dhearadh, leanamar moltaí ginearálta agus rinneamar iarracht gan muid féin a lámhach sa chos, ach chuaigh muid níos faide ná comhairle ghinearálta mar “ná húsáid an patrún Luachanna Tréithe Aonáin níor chuaigh muid isteach. Dhearamar bunaithe ar phrionsabail an normalaithe, chun iomarcaíocht sonraí a sheachaint agus ní raibh aon imní orainn faoi cheisteanna áirithe a bhrostú. Chomh luath agus a tháinig na chéad úsáideoirí, thángamar ar fhadhb feidhmíochta. Mar is gnách, bhíomar go hiomlán neamhullmhaithe chuige seo. Na chéad fadhbanna iompaigh amach a bheith simplí. De ghnáth, réitíodh gach rud trí innéacs nua a chur leis. Ach tháinig am nuair a stop paistí simplí ag obair. Ag tabhairt faoi deara go bhfuil easpa taithí againn agus go bhfuil sé ag éirí níos deacra dúinn a thuiscint cad is cúis leis na fadhbanna, d'fhostaigh muid speisialtóirí a chabhraigh linn an freastalaí a shocrú i gceart, monatóireacht a dhéanamh ar nascadh, agus thaispeáin dúinn cá háit le breathnú. staitisticí.

Pictiúr a dó. Staidrimh

Mar sin tá thart ar 10 míle fiosrúchán difriúil againn a dhéantar ar ár mbunachar sonraí in aghaidh an lae. As na 10 míle seo, tá arrachtaigh ann a fhorghníomhaítear 2-3 milliún uair le meán-am forghníomhaithe de 0.1-0.3 ms, agus tá ceisteanna ann le meán-am forghníomhaithe de 30 soicind ar a dtugtar 100 uair sa lá.

Níorbh fhéidir gach ceann de na 10 míle fiosrúchán a bharrfheabhsú, mar sin shocraigh muid a dhéanamh amach cén áit ar cheart ár n-iarrachtaí a dhíriú chun feidhmíocht an bhunachair shonraí a fheabhsú i gceart. Tar éis roinnt atriallta, thosaigh muid ar iarratais a roinnt ina gcineálacha.

Iarratais BARR

Is iad seo na ceisteanna is troime a thógann an t-am is mó (am iomlán). Is ceisteanna iad seo a dtugtar ceachtar acu go minic nó ceisteanna a thógann achar an-fhada chun iad a fhorghníomhú (cuireadh barrfheabhsú ar cheisteanna fada agus minice sa chéad atriallta den troid ar son luais). Mar thoradh air sin, caitheann an freastalaí an t-am is mó ar a gcur i gcrích. Ina theannta sin, tá sé tábhachtach na hiarrataí barr a scaradh de réir aga forghníomhaithe iomlán agus ar leithligh faoin am IO. Tá na modhanna chun ceisteanna den sórt sin a bharrfheabhsú beagán difriúil.

Is é gnáthchleachtas gach cuideachta oibriú le hiarratais BARR. Is beag ceann acu; is féidir fiú 5-10% d’acmhainní a shaoradh trí cheist amháin a bharrfheabhsú. Mar sin féin, de réir mar a théann an tionscadal in aibíocht, ní bhíonn sé chomh fánach i gcónaí fiosrúcháin BARR a bharrfheabhsú. Tá gach modh simplí oibrithe amach cheana féin, agus ní thógann an t-iarratas is "trom" ach 3-5% d'acmhainní. Má thógann fiosruithe BARR níos lú ná 30-40% den am san iomlán, is dóichí go bhfuil iarrachtaí déanta agat cheana féin chun iad a oibriú go tapa agus tá sé in am bogadh ar aghaidh go dtí ceisteanna ón gcéad ghrúpa eile a bharrfheabhsú.
Tá sé fós chun an cheist a fhreagairt cé mhéad príomhcheist ba chóir a chur san áireamh sa ghrúpa seo. De ghnáth glacaim 10 ar a laghad, ach gan níos mó ná 20. Déanaim iarracht a chinntiú nach mbíonn difríocht idir am an chéad agus an ceann deireanach sa ghrúpa BARR níos mó ná 10 n-uaire. Is é sin, má thiteann an t-am forghníomhaithe ceist go géar ón 1ú áit go dtí an 10ú háit, ansin tógann mé TOP-10, má tá an titim níos mó de réir a chéile, ansin méadóidh mé an grúpa go 15 nó 20.
Fiosrúcháin bunachar sonraí a bharrfheabhsú ag baint úsáide as an sampla de sheirbhís B2B do thógálaithe

tuathánach meánach

Is iarratais iad seo go léir a thagann díreach tar éis BARR, cé is moite den 5-10% deireanach. De ghnáth, agus barrfheabhsú á dhéanamh ar na ceisteanna seo tá an deis ann feidhmíocht an fhreastalaí a mhéadú go mór. Féadfaidh na hiarratais seo suas le 80% a mheá. Ach fiú má tá a sciar níos mó ná 50%, tá sé in am breathnú orthu ar bhealach níos cúramach.

Eireaball

Mar a luadh, tagann na fiosruithe seo ag an deireadh agus tógann siad 5-10% den am. Ní féidir leat dearmad a dhéanamh orthu ach amháin mura n-úsáideann tú uirlisí uathoibríocha anailíse fiosrúcháin, ansin is féidir iad a bharrfheabhsú saor freisin.

Conas gach grúpa a mheas?

Úsáidim ceist SQL a chuidíonn le measúnú mar seo a dhéanamh do PostgreSQL (táim cinnte gur féidir ceist chomhchosúil a scríobh do go leor DBMSanna eile)

Iarratas SQL chun meastachán a dhéanamh ar mhéid na ngrúpaí BARR-MEDIUM-TAIL

SELECT sum(time_top) AS sum_top, sum(time_medium) AS sum_medium, sum(time_tail) AS sum_tail
FROM
(
  SELECT CASE WHEN rn <= 20              THEN tt_percent ELSE 0 END AS time_top,
         CASE WHEN rn > 20 AND rn <= 800 THEN tt_percent ELSE 0 END AS time_medium,
         CASE WHEN rn > 800              THEN tt_percent ELSE 0 END AS time_tail
  FROM (
    SELECT total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query,
    ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn
    FROM pg_stat_statements
    ORDER BY total_time DESC
  ) AS t
)
AS ts

Is é toradh na ceiste ná trí cholún, gach ceann acu ina bhfuil an céatadán ama a thógann sé chun fiosrúcháin ón ngrúpa seo a phróiseáil. Laistigh den iarratas tá dhá uimhir (is é 20 agus 800 i mo chás) a scarann ​​iarratais ó ghrúpa amháin ó ghrúpa eile.

Seo mar a dhéantar comparáid idir scaireanna na n-iarratas ag an am a thosaigh an obair optamaithe agus anois.

Fiosrúcháin bunachar sonraí a bharrfheabhsú ag baint úsáide as an sampla de sheirbhís B2B do thógálaithe

Léiríonn an léaráid go bhfuil laghdú mór tagtha ar sciar na n-iarratas BARR, ach tá méadú tagtha ar na “peasants lár”.
Ar dtús, chuimsigh na hiarratais BARR earráidí soiléire. Le himeacht ama, d’imigh galair óige, tháinig laghdú ar sciar na n-iarratas BARR, agus b’éigean níos mó iarrachtaí a dhéanamh chun iarratais dheacra a bhrostú.

Chun téacs na n-iarratas a fháil bainimid úsáid as an iarratas seo a leanas

SELECT * FROM (
  SELECT ROW_NUMBER () OVER (ORDER BY total_time DESC) AS rn, total_time / (SELECT sum(total_time) FROM pg_stat_statements) * 100 AS tt_percent, query
  FROM pg_stat_statements
  ORDER BY total_time DESC
) AS T
WHERE
rn <= 20 -- TOP
-- rn > 20 AND rn <= 800 -- MEDIUM
-- rn > 800  -- TAIL

Seo liosta de na teicníochtaí is coitianta a úsáidtear a chabhraigh linn fiosruithe BARR a bhrostú:

  • Athdhearadh an chórais, mar shampla, an loighic fógra a athoibriú ag baint úsáide as bróicéir teachtaireachta in ionad fiosruithe tréimhsiúla chuig an mbunachar sonraí
  • Innéacsanna a chur leis nó a athrú
  • Ceisteanna ORM a athscríobh chuig SQL íon
  • Loighic luchtaithe sonraí leisciúil a athscríobh
  • Taisce trí dhínormalú sonraí. Mar shampla, tá nasc tábla againn Seachadadh -> Sonrasc -> Iarratas -> Iarratas. Is é sin le rá go bhfuil baint ag gach seachadadh le hiarratas trí tháblaí eile. Chun nach nascfar na táblaí go léir i ngach iarratas, rinneamar an nasc leis an iarratas a dhúbailt sa tábla Seachadta.
  • Táblaí statacha á dtaisceadh le leabhair thagartha agus táblaí a athraíonn go hannamh i gcuimhne cláir.

Uaireanta b'ionann na hathruithe agus athdhearadh suntasach, ach chuir siad 5-10% d'ualach an chórais ar fáil agus bhí údar maith leo. Le himeacht ama, tháinig an sceite níos lú agus níos lú, agus bhí gá le hathdhearadh níos mó agus níos tromchúisí.

Ansin d'iompaíomar ár n-aird ar an dara grúpa iarratas - an grúpa tuathánach lár. Tá i bhfad níos mó ceisteanna istigh ann agus ba chosúil go dtógfadh sé go leor ama anailís a dhéanamh ar an ngrúpa ar fad. Mar sin féin, bhí an chuid is mó de na fiosrúcháin an-simplí le leas iomlán a bhaint astu, agus rinneadh go leor fadhbanna arís agus arís eile in éagsúlachtaí éagsúla. Seo samplaí de roinnt optamaithe tipiciúla a chuireamar i bhfeidhm ar an iliomad fiosrúchán comhchosúla agus dhíluchtaigh gach grúpa fiosrúchán optamaithe an bunachar sonraí 3-5%.

  • In ionad a sheiceáil le haghaidh láithreacht taifead ag baint úsáide as COUNT agus scanadh tábla iomlán, thosaigh EXISTS a úsáid
  • Faigh réidh DISTINCT (níl aon oideas ginearálta ann, ach uaireanta is féidir leat fáil réidh leis go héasca tríd an iarratas a bhrostú 10-100 uair).

    Mar shampla, in ionad ceiste chun gach tiománaí a roghnú ó tábla mór seachadtaí (SEACHADADH)

    SELECT DISTINCT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM DELIVERY D JOIN PERSON P ON D.DRIVER_ID = P.ID
    

    rinne sé ceist ar tábla measartha beag DUINE

    SELECT P.ID, P.FIRST_NAME, P.LAST_NAME
    FROM PERSON
    WHERE EXISTS(SELECT D.ID FROM DELIVERY WHERE D.DRIVER_ID = P.ID)
    

    Is cosúil gur úsáideamar focheist chomhghaolaithe, ach tugann sé luas níos mó ná 10 n-uaire.

  • I go leor cásanna, tréigeadh COUNT ar fad agus
    neasluach a ríomh ina ionad
  • in ionad
    UPPER(s) LIKE JOHN%’ 
    

    úsáid a bhaint as

    s ILIKE “John%”
    

Uaireanta cuireadh dlús le gach iarratas ar leith 3-1000 uair. In ainneoin na feidhmíochta iontacha, bhí an chuma ar an scéal dúinn ar dtús nach raibh aon phointe le leas iomlán a bhaint as ceist a thógann 10 ms le cur i gcrích, atá ar cheann de na 3ú céad fiosrúchán is troime, agus a thógann suas na céadta faoin gcéad d’am ualach iomlán an bhunachair sonraí. Ach tríd an t-oideas céanna a chur i bhfeidhm ar ghrúpa ceisteanna den chineál céanna, bhuaigh muid cúpla faoin gcéad ar ais. Ionas nach gcuirfí am amú ama ag déanamh athbhreithnithe de láimh ar na céadta ceist ar fad, scríobhamar roinnt scripteanna simplí a bhain úsáid as nathanna cainte rialta chun fiosrúcháin den chineál céanna a aimsiú. Mar thoradh air sin, thug cuardach uathoibríoch ar ghrúpaí fiosrúchán deis dúinn ár bhfeidhmíocht a fheabhsú tuilleadh le hiarracht bheag.

Mar thoradh air sin, táimid ag obair ar na crua-earraí céanna le trí bliana anois. Is é an meán-ualach laethúil thart ar 30%, i beanna sroicheann sé 70%. Tá méadú thart ar 10 n-uaire tagtha ar líon na n-iarratas, chomh maith le líon na n-úsáideoirí. Agus seo go léir a bhuíochas leis an bhfaireachán leanúnach a dhéantar ar na grúpaí céanna seo d'iarratais BARR-MEÁNACHA. Chomh luath agus a thagann iarratas nua le feiceáil sa ghrúpa TOP, déanaimid anailís láithreach air agus déanfaimid iarracht é a bhrostú. Déanaimid athbhreithniú ar an ngrúpa MEDIUM uair sa tseachtain ag baint úsáide as scripteanna anailíse ceisteanna. Má thagaimid ar cheisteanna nua a bhfuil a fhios againn cheana féin conas iad a bharrfheabhsú, déanaimid iad a athrú go tapa. Uaireanta aimsímid modhanna nua optamaithe ar féidir iad a chur i bhfeidhm ar roinnt ceisteanna ag an am céanna.

De réir ár réamhaisnéisí, seasfaidh an freastalaí reatha méadú ar líon na n-úsáideoirí 3-5 huaire eile. Fíor, tá ace amháin níos mó againn suas ár muinchille - ní mór dúinn fós aistrigh ceisteanna SELECT chuig an scáthán, mar a mholtar. Ach ní dhéanaimid é seo go comhfhiosach, mar ba mhaith linn na féidearthachtaí a bhaineann le leas iomlán a bhaint as “cliste” a sceite go hiomlán ar dtús sula gcuirfimid an “airtléire trom” ar siúl.
D’fhéadfadh sé go dtabharfadh sracfhéachaint chriticiúil ar an obair a rinneadh le tuiscint go n-úsáidfí scálú ingearach. Ceannaigh freastalaí níos cumhachtaí seachas am na speisialtóirí a chur amú. Seans nach gcosnóidh an freastalaí an oiread sin, go háirithe ós rud é nach bhfuil teorainneacha an scálaithe ingearach ídithe againn fós. Mar sin féin, níor mhéadaigh ach líon na n-iarratas 10 n-uaire. Le roinnt blianta anuas, tá méadú tagtha ar fheidhmiúlacht an chórais agus anois tá níos mó cineálacha iarratais ann. A bhuí le taisceadh, déantar an fheidhmiúlacht a bhí ann i níos lú iarratas, agus iarratais níos éifeachtaí. Ciallaíonn sé seo gur féidir leat a iolrú go sábháilte faoi 5 eile chun an fíor-chomhéifeacht luasghéaraithe a fháil. Mar sin, de réir na meastachán is coimeádaí, is féidir linn a rá go raibh an luasghéarú 50 uair nó níos mó. Bheadh ​​costas 50 uair níos mó ag baint le freastalaí a luascadh go hingearach. Go háirithe ag smaoineamh go n-oibríonn sé an t-am ar fad a luaithe a dhéantar an leas iomlán a bhaint as, agus tagann an bille don fhreastalaí ar cíos gach mí.

Foinse: will.com

Add a comment