Te arotau i nga patai paparangi ma te whakamahi i te tauira o te ratonga B2B mo nga kaihanga

Me pehea te whakatipu 10 nga wa ki te maha o nga patai ki te papaaarangi me te kore e neke atu ki tetahi tuumau whai hua me te pupuri i nga mahi a te punaha? Ka korerotia e ahau ki a koe me pehea ta matou whakahaere i te heke o te mahinga o to maatau paparangi raraunga, me pehea ta matou whakatika i nga patai SQL kia rite ki te maha o nga kaiwhakamahi ka taea me te kore e piki ake te utu mo nga rauemi rorohiko.

Ka mahia e ahau he ratonga mo te whakahaere i nga mahi pakihi i roto i nga kamupene hanga. Tata ki te 3 mano nga kamupene e mahi tahi ana me matou. Neke atu i te 10 mano nga taangata e mahi tahi ana me ta maatau punaha ia ra mo nga haora 4-10. Ka whakatauhia e ia nga momo raruraru o te whakamahere, te whakamohiotanga, te whakatupato, te whakamana... Ka whakamahi matou i te PostgreSQL 9.6. Tata ki te 300 nga teepu kei roto i te paataka raraunga, tae atu ki te 200 miriona patai (10 mano rereke) ka whakawhiwhia ia ra. I te toharite kei a matou 3-4 mano tono mo ia hekona, i nga wa tino kaha neke atu i te 10 mano tono mo ia hekona. Ko te nuinga o nga patai he OLAP. He iti ake nga taapiri, whakarereke me te whakakore, ko te tikanga he maamaa te kawenga OLTP. I hoatu e ahau enei nama katoa kia taea e koe te aromatawai i te rahi o to maatau kaupapa me te mohio ki te whai hua o to maatau wheako ki a koe.

Pikitia tetahi. Waiata

I te wa i timata ai matou ki te whakawhanaketanga, kaore matou i tino whakaaro mo te ahua o te kawenga ka taka ki runga i te papaaarangi me te aha ka mahia e matou mena ka mutu te toia e te tūmau. I te wa e hoahoa ana i te putunga korero, i whai matou i nga tohutohu whanui me te ngana kia kaua e pupuhi i a matou i o matou waewae, engari i tua atu i nga tohutohu whanui penei "kaua e whakamahi i te tauira. Uara Huanga Hinonga kare matou i uru ki roto. I hangaia e matou i runga i nga maataapono o te whakatikatika, te karo i te taapiri raraunga me te kore e aro ki te tere ake i etahi patai. I te taenga mai o nga kaiwhakamahi tuatahi, ka raru matou i te mahi. Ka rite ki o mua, kaore matou i tino rite mo tenei. Ko nga raruraru tuatahi i puta he ngawari. Hei tikanga, i whakatauhia nga mea katoa ma te taapiri i te taurangi hou. Engari i tae mai te wa i mutu ai te mahi o nga papanga ngawari. I te mohio kei te kore o maatau wheako me te uaua ki a maatau ki te mohio he aha nga raruraru, ka utua e matou nga tohungatanga i awhina i a matou ki te whakarite tika i te tūmau, te hono i te aroturuki, me te whakaatu mai ki a matou te waahi ki te tiki. tatauranga.

Pikitia tuarua. Tauanga

No reira he 10 mano nga patai rereke ka mahia i runga i ta maatau papaarangi ia ra. I roto i enei 10 mano, he taniwha ka mahia 2-3 miriona nga wa me te wa mahi o te 0.1-0.3 ms, a he patai he 30 hēkona te waa e kiia ana ko te 100 nga wa ia ra.

Kaore i taea te arotau i nga patai 10 mano katoa, no reira ka whakatau matou ki te whakaaro ki te waahi hei arahi i a maatau mahi kia pai ake ai te mahi o te paataka raraunga. Whai muri i etahi whitiwhitinga, ka timata matou ki te wehewehe i nga tono ki nga momo.

Nga tono TOP

Koinei nga patai tino taumaha ka nui ake te waa (wa katoa). He patai enei e kiia ana he maha nga wa, he roa ranei nga patai e mahia ana (he roa me te auau nga patai i arotauhia i nga waahanga tuatahi o te whawhai mo te tere). Ko te mutunga, ka pau te nuinga o te wa o te kaimau ki runga i a raatau mahi. I tua atu, he mea nui ki te wehe i nga tono runga ma te katoa o te waa mahi me te wehe i te waa IO. He paku rereke nga tikanga mo te arotau i aua patai.

Ko te tikanga o nga kamupene katoa ko te mahi me nga tono TOP. He iti noa iho o raatau; ma te arotau i te patai kotahi ka taea te whakawātea 5-10% o nga rauemi. Heoi, i te wa e pakeke ana te kaupapa, ko te arotau i nga patai TOP ka noho hei mahi kore noa. Ko nga tikanga ngawari katoa kua oti te mahi, a ko te tono "taimaha" he "anake" 3-5% o nga rauemi. Mena he iti iho i te 30-40% te roa o nga paatai ​​TOP, katahi pea kua whakapau kaha koe kia tere te mahi, kua tae ki te wa ki te arotau i nga patai mai i te roopu e whai ake nei.
Ka noho tonu ki te whakautu i te patai mo te maha o nga patai matua me whakauru ki tenei roopu. I te nuinga o te wa ka tango ahau i te 10, engari kaua e neke ake i te 20. Ka ngana ahau ki te whakarite kia rereke te wa o te tuatahi me te whakamutunga o te roopu TOP e kore e neke atu i te 10 nga wa. Arā, ki te tino heke te wa mahi uiui mai i te waahi tuatahi ki te 1, ka tango ahau i te TOP-10, mena ka heke haere te heke, katahi ka whakanuia e ahau te rahi o te roopu ki te 10, 15 ranei.
Te arotau i nga patai paparangi ma te whakamahi i te tauira o te ratonga B2B mo nga kaihanga

Kaiahuwhenua Waenganui

Ko enei katoa nga tono ka tae mai i muri tonu mai i te TOP, haunga te 5-10%. I te nuinga o te wa, i roto i te arotau i enei patai kei te whai waahi ki te whakanui ake i nga mahi a te kaitoro. Ka taea e enei tono te taumaha ki te 80%. Engari ahakoa kua neke ake i te 50% o ratou hea, kua tae ki te wa ki te ata titiro ki a ratou.

Hiore

Ka rite ki te korero, ka tae mai enei patai i te mutunga ka tango i te 5-10% o te waa. Ka taea e koe te wareware ki a raatau mena kaore koe e whakamahi i nga taputapu tātari uiui aunoa, katahi ka iti noa te utu.

Me pehea te arotake i ia roopu?

Ka whakamahi ahau i tetahi patai SQL hei awhina i te aromatawai pera mo PostgreSQL (E mohio ana ahau ka taea te tuhi i tetahi patai mo etahi atu DBMS)

Uiui SQL hei whakatau tata i te rahi o nga roopu TOP-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

Ko te hua o te patai e toru nga pou, kei ia waahanga te paheketanga o te waa ki te tukatuka i nga patai mai i tenei roopu. Kei roto i te tono e rua nga nama (i taku keehi ko te 20 me te 800) e wehe ana i nga tono mai i tetahi roopu mai i tetahi atu.

Koinei te ahua o te whakataurite o nga hea o nga tono i te wa i timata ai nga mahi arotautanga, inaianei.

Te arotau i nga patai paparangi ma te whakamahi i te tauira o te ratonga B2B mo nga kaihanga

E whakaatu ana te hoahoa kua tino heke te wahanga o nga tono a TOP, engari kua piki ake nga "kaiahuwhenua o waenga".
I te tuatahi, ko nga tono a TOP ko nga pohehe. I te wa o te wa, kua ngaro nga mate o te tamarikitanga, kua heke te wahanga o nga tono TOP, me te kaha ake o nga mahi kia tere ake nga tono uaua.

Hei tiki i nga tuhinga o nga tono ka whakamahia e matou te tono e whai ake nei

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

Anei te rarangi o nga tikanga e whakamahia nuitia ana i awhina i a matou ki te tere ake i nga patai TOP:

  • Hoahoa ano i te punaha, hei tauira, te mahi ano i te arorau whakamohiotanga ma te whakamahi i te kaihokohoko karere hei utu mo nga patai i ia wa ki te papaa raraunga.
  • Te taapiri, te whakarereke ranei i nga tohu
  • Te tuhi ano i nga patai ORM ki te SQL parakore
  • Te tuhi ano i te arorau uta raraunga mangere
  • Keteroki i roto i te denormalization raraunga. Hei tauira, kei a matou he hononga ripanga Tukunga -> Nama -> Tono -> Tono. Arā, ko ia tukunga e hono ana ki tetahi tono ma etahi atu ripanga. Kia kore ai e hono nga ripanga katoa i ia tono, i taaruatia e matou te hono ki te tono ki te ripanga Tukunga.
  • Keteroki ripanga pateko me nga pukapuka tohutoro me te whakarereke i nga ripanga i roto i te mahara o te papatono.

I etahi wa ka nui nga huringa ki te hoahoa hou, engari i whakaratohia e ratou te 5-10% o te kawenga o te punaha me te tika. I te wa o te wa, ka iti haere te pupuhi, ka nui ake te ahua o te hoahoa hou.

Katahi ka huri atu o matou whakaaro ki te roopu tuarua o nga tono - te roopu o nga kaiahuwhenua waenga. He maha atu ano nga patai kei roto, me te mea he roa te wa ki te wetewete i te roopu katoa. Heoi, ko te nuinga o nga patai he tino ngawari ki te arotau, a he maha nga raru i tukuna e hia nga wa i roto i nga rereketanga rereke. Anei nga tauira o etahi arotautanga angamaheni i hoatu e matou ki te maha o nga patai rite, a ko ia roopu o nga patai kua arotauhia i wetewete i te papaunga raraunga ma te 3-5%.

  • Engari i te tirotiro mo te noho o nga rekoata ma te whakamahi i te COUNT me te karapa tepu katoa, i timata te whakamahi a EXISTS
  • Kua whakakorehia te DISTINCT (kare he tohutaka whanui, engari i etahi wa ka ngawari te whakakore ma te tere ake te tono ma te 10-100 wa).

    Hei tauira, hei utu mo te patai ki te whiriwhiri i nga taraiwa katoa mai i te ripanga nui o nga tukunga (TUKU)

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

    i hanga he patai ki runga i tetahi tepu iti PERSON

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

    Te ahua nei i whakamahia e matou he patai taapiri, engari ka tere ake i te 10 nga wa.

  • I te nuinga o nga wa, i whakarerea katoatia a COUNT
    ka whakakapihia e te tataunga o te uara tata
  • Tuhinga o mua
    UPPER(s) LIKE JOHN%’ 
    

    используем

    s ILIKE “John%”
    

I etahi wa ka tere ake ia tono motuhake ma te 3-1000 nga wa. Ahakoa te whakamīharo o te mahi, i te tuatahi ko te ahua ki a matou kaore he take ki te arotau i tetahi patai e 10 ms ki te whakaoti, ko tetahi o nga patai 3 rau tino taumaha, me te tango i te haurau o te ōrau o te katoa o te wa uta putunga raraunga. Engari na roto i te tono i taua tohutao ki tetahi roopu patai o taua momo, ka hoki mai he iti paiheneti. Kia kore ai e moumou taima ki te arotake-a-ringa i nga rau patai katoa, i tuhia e matou etahi tuhinga ngawari e whakamahi ana i nga korero auau ki te rapu patai o taua momo. Ko te mutunga mai, ko te rapu aunoa i nga roopu patai ka taea e matou te whakapai ake i o maatau mahi me te whakapau kaha.

Ko te mutunga mai, kua toru tau matou e mahi ana mo taua taputapu ano. Ko te kawenga o ia ra mo te 30%, i nga tihi ka tae ki te 70%. Ko te maha o nga tono, me te maha o nga kaiwhakamahi, kua piki ake ki te 10 nga wa. Na tenei katoa he mihi ki te tirotiro tonu i enei roopu o nga tono TOP-MEDIUM. Ka puta mai he tono hou i roto i te roopu TOP, ka tirotirohia e matou ka ngana ki te tere ake. Ka arotakehia e matou te roopu MEDIUM kotahi i te wiki ma te whakamahi i nga tuhinga tātari patai. Mena ka kitea e matou nga patai hou e mohio ana matou ki te arotau, ka tere te whakarereke. I etahi wa ka kitea e matou nga tikanga arotautanga hou ka taea te tono ki etahi patai i te wa kotahi.

E ai ki o maatau matapae, ko te kaitoro o naianei ka kaha ki te whakanui ake i te maha o nga kaiwhakamahi i etahi atu 3-5 wa. He pono, he kotahi ano to maatau ace - kaore ano kia whakawhitia nga patai SELECT ki te whakaata, pera me te mea e taunaki ana. Engari kaore matou e mahi i tenei ma te mohio, na te mea e hiahia ana matou ki te whakapau i te tuatahi ki te whakapau kaha ki te "maamaa" arotautanga i mua i te huri i te "maama puhoi".
Ko te titiro arohaehae ki nga mahi kua oti te whakaaro me whakamahi te whakatauine poutū. Hokona he tūmau kaha ake hei utu mo te moumou taima o nga tohunga. Kare pea te utu nui o te kaimau, ina koa kaore ano kia pau nga rohe o te whakatauine poutū. Heoi, ko te maha o nga tono i piki 10 nga wa. I roto i nga tau maha, kua piki ake te mahinga o te punaha, inaianei kua nui ake nga momo tono. He mihi ki te keteroki, he iti ake nga tono, me nga tono pai ake. Ko te tikanga ka taea e koe te whakareatia ki tetahi atu 5 ki te tiki i te whakarea whakaterenga tuturu. Na, e ai ki nga whakatau tata, ka taea e tatou te kii ko te whakaterenga he 50 nga wa neke atu ranei. Ko te piu poutū i te tūmau ka 50 te utu ake. Ina koa ka mahia te arotautanga ka mahi i nga wa katoa, ka tae mai te pire mo te kaimau reti ia marama.

Source: will.com

Tāpiri i te kōrero