Imiphumela yosesho nezinkinga zokusebenza

Esinye sezimo ezijwayelekile kuzo zonke izinhlelo zokusebenza esizijwayele ukucinga idatha ngokuya ngemibandela ethile bese siyibonisa ngendlela efundeka kalula. Kungase futhi kube nezinketho ezengeziwe zokuhlunga, ukuqoqa, nokupheja. Umsebenzi, ngombono, uyinto encane, kodwa lapho beyixazulula, abathuthukisi abaningi benza amaphutha amaningi, okubangela kamuva ukuthi ukukhiqiza kuhlupheke. Ake sizame ukucabangela izinketho ezihlukahlukene zokuxazulula le nkinga futhi senze izincomo zokukhetha ukuqaliswa okuphumelelayo kakhulu.

Imiphumela yosesho nezinkinga zokusebenza

Inketho yokuphega #1

Inketho elula kakhulu efika emqondweni iwukuboniswa kwekhasi nekhasi kwemiphumela yokusesha ngendlela yayo yakudala.

Imiphumela yosesho nezinkinga zokusebenza
Ake sithi uhlelo lwakho lokusebenza lusebenzisa isizindalwazi esihlobene. Kulokhu, ukuze ubonise ulwazi kuleli fomu, uzodinga ukusebenzisa imibuzo emibili ye-SQL:

  • Thola imigqa yekhasi lamanje.
  • Bala inani eliphelele lemigqa ehambisana nemibandela yokusesha - lokhu kuyadingeka ukuze ubonise amakhasi.

Ake sibheke umbuzo wokuqala sisebenzisa isizindalwazi sokuhlola se-MS SQL njengesibonelo I-AdventureWorks kuseva ka-2016. Ngale njongo sizosebenzisa ithebula le-Sales.SalesOrderHeader:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Umbuzo ongenhla uzobuyisela ama-oda angu-50 okuqala ohlwini, ahlelwe ngedethi eyehlayo yokwengeza, ngamanye amazwi, ama-oda akamuva angu-50.

Isebenza ngokushesha esisekelweni sokuhlola, kodwa ake sibheke uhlelo lokubulawa kanye nezibalo ze-I/O:

Imiphumela yosesho nezinkinga zokusebenza

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Ungathola izibalo ze-I/O zombuzo ngamunye ngokusebenzisa umyalo othi SET STATISTICS IO ON ngesikhathi sokusebenza kombuzo.

Njengoba ubona kuhlelo lokusebenza, inketho edinga kakhulu insiza iwukuhlunga yonke imigqa yethebula lomthombo ngedethi engezwe ngayo. Futhi inkinga iwukuthi uma imigqa eminingi ivela etafuleni, "kunzima" ukuhlunga kuzoba. Empeleni, izimo ezinjalo kufanele zigwenywe, ngakho-ke ake sengeze inkomba ngosuku lokwengeza futhi sibone ukuthi ukusetshenziswa kwezinsiza kushintshile yini:

Imiphumela yosesho nezinkinga zokusebenza

Table 'SalesOrderHeader'. Scan count 1, logical reads 165, physical reads 0, read-ahead reads 5, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Ngokusobala sekungcono kakhulu. Kodwa ingabe zonke izinkinga ziyaxazululeka? Masiguqule umbuzo ukuze sifune ama-oda lapho inani eliphelele lempahla lidlula u-$100:

SELECT * FROM Sales.SalesOrderHeader
WHERE SubTotal > 100
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Imiphumela yosesho nezinkinga zokusebenza

Table 'SalesOrderHeader'. Scan count 1, logical reads 1081, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Sinesimo esihlekisayo: icebo lombuzo alibi kakhulu kunolo lwangaphambilini, kodwa inani langempela lokufundwa okunengqondo licishe libe likhulu ngokuphindwe kabili kuneskena sethebula eligcwele. Kukhona indlela yokuphuma - uma senza inkomba eyinhlanganisela kusuka kunkomba ekhona kakade futhi sengeza inani lentengo yezimpahla njengenkambu yesibili, sizophinda sithole ukufundwa okunengqondo okungu-165:

CREATE INDEX IX_SalesOrderHeader_OrderDate_SubTotal on Sales.SalesOrderHeader(OrderDate, SubTotal);

Lolu chungechunge lwezibonelo lungaqhutshekwa isikhathi eside, kodwa imicabango emibili eyinhloko engifuna ukuyiveza lapha yilena:

  • Ukwengeza noma yimuphi umbandela omusha noma i-oda lokuhlunga embuzweni wosesho kungaba nomthelela omkhulu esivinini sombuzo wosesho.
  • Kodwa uma sidinga ukususa ingxenye kuphela yedatha, hhayi yonke imiphumela ehambisana namagama okusesha, ziningi izindlela zokuthuthukisa lowo mbuzo.

Manje ake sidlulele embuzweni wesibili okukhulunywe ngawo ekuqaleni - lowo obala inani lamarekhodi anelisa umbandela wokusesha. Ake sithathe isibonelo esifanayo - ukucinga ama-oda angaphezu kuka-$100:

SELECT COUNT(1) FROM Sales.SalesOrderHeader
WHERE SubTotal > 100

Uma kubhekwa inkomba eyinhlanganisela ekhonjiswe ngenhla, sithola:

Imiphumela yosesho nezinkinga zokusebenza

Table 'SalesOrderHeader'. Scan count 1, logical reads 698, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Iqiniso lokuthi umbuzo udlula kuyo yonke inkomba akumangazi, njengoba inkambu ye-SubTotal ingekho endaweni yokuqala, ngakho umbuzo awukwazi ukuyisebenzisa. Inkinga ixazululwa ngokungeza enye inkomba kunkambu ye-SubTotal, futhi ngenxa yalokho inikeza ukufundwa okunengqondo okungu-48 kuphela.

Unganikeza izibonelo ezimbalwa ezengeziwe zezicelo zokubala amanani, kodwa ingqikithi ihlala injalo: ukuthola ucezu lwedatha nokubala inani eliphelele kuyizicelo ezimbili ezihluke kakhulu, futhi ngayinye idinga izilinganiso zayo zokuthuthukisa. Ngokuvamile, ngeke ukwazi ukuthola inhlanganisela yezinkomba ezisebenza ngokulinganayo kuyo yomibili imibuzo.

Ngokufanelekile, enye yezidingo ezibalulekile okufanele zicaciswe lapho kwakhiwa isixazululo sosesho ukuthi kubaluleke ngempela yini ukuthi ibhizinisi libone isamba senani lezinto ezitholakele. Kuyaye kwenzeke ukuthi cha. Futhi ukuzulazula ngezinombolo zamakhasi athile, ngokubona kwami, kuyisixazululo esinobubanzi obuncane kakhulu, njengoba izimo eziningi zokuphega zibukeka njengokuthi “iya ekhasini elilandelayo.”

Inketho yokuphega #2

Ake sicabange ukuthi abasebenzisi abanandaba nokwazi inani eliphelele lezinto ezitholiwe. Ake sizame ukwenza ikhasi losesho libe lula:

Imiphumela yosesho nezinkinga zokusebenza
Eqinisweni, okuwukuphela kwento eshintshile ukuthi ayikho indlela yokuzulazula ezinambeni ezithile zekhasi, futhi manje leli thebula alidingi ukwazi ukuthi zingaki ezingaba khona ukuze libonise. Kodwa umbuzo uphakama - ithebula lazi kanjani uma kukhona idatha yekhasi elilandelayo (ukuze kuboniswe kahle isixhumanisi "Okulandelayo")?

Impendulo ilula kakhulu: ungafunda ku-database irekhodi elilodwa ngaphezu kwalokho elidingekayo ukuze liboniswe, futhi ukuba khona kwaleli rekhodi "elingeziwe" kuzobonisa ukuthi ikhona yini ingxenye elandelayo. Ngakho, ukuze uthole ikhasi elilodwa ledatha, udinga kuphela ukwenza isicelo esisodwa, esithuthukisa kakhulu ukusebenza futhi senze kube lula ukusekela ukusebenza okunjalo. Emsebenzini wami, kwakukhona icala lapho wenqaba ukubala inani eliphelele lamarekhodi asheshisa ukulethwa kwemiphumela izikhathi ezingu-4-5.

Kunezinketho ezimbalwa zokusebenzelana komsebenzisi zale ndlela: imiyalo "emuva" kanye "phambili", njengakusibonelo esingenhla, inkinobho ethi "layisha okwengeziwe", evele yengeze ingxenye entsha emiphumeleni ebonisiwe, "infinite scroll", esebenzayo. ngesimiso sokuthi "layisha okwengeziwe" ", kodwa isignali yokuthola ingxenye elandelayo iwukuba umsebenzisi apheqe yonke imiphumela ebonisiwe kuze kube sekupheleni. Noma ngabe yisiphi isisombululo esibonakalayo, umgomo wesampula wedatha uhlala unjalo.

Ama-nuances wokuqalisa ukusebenza kwekhasi

Zonke izibonelo zemibuzo ezinikezwe ngenhla zisebenzisa indlela ethi “offset + count”, lapho umbuzo ngokwawo ucacisa ukuthi imigqa yemiphumela ilandelana ngaluphi uhlobo nokuthi mingaki imigqa okudingeka ibuyiswe. Okokuqala, ake sibheke indlela engcono kakhulu yokuhlela ukudlula kwepharamitha kuleli cala. Empeleni, ngithole izindlela ezimbalwa:

  • Inombolo yomkhiqizo yekhasi eliceliwe (i-pageIndex), usayizi wekhasi (usayizi wekhasi).
  • Inombolo yomkhiqizo yerekhodi lokuqala elizobuyiswa (startIndex), inombolo enkulu yamarekhodi kumphumela (ukubala).
  • Inombolo yokulandelana yerekhodi lokuqala elizobuyiswa (startIndex), inombolo yokulandelana yerekhodi lokugcina elizobuyiswa (endIndex).

Uma uthi nhlá kungase kubonakale sengathi lokhu kuyinto eyisisekelo kangangokuthi akukho mehluko. Kodwa akunjalo - inketho elula kunazo zonke futhi yendawo yonke eyesibili (i-startIndex, count). Kunezizathu eziningana zalokhu:

  • Mayelana nendlela yokuhlola yokufaka +1 enikezwe ngenhla, inketho yokuqala ene-pageIndex kanye ne-pageSize iphazamisa kakhulu. Isibonelo, sifuna ukubonisa okuthunyelwe okungu-50 ngekhasi ngalinye. Ngokusho kwe-algorithm engenhla, udinga ukufunda irekhodi elilodwa kunesidingo. Uma lokhu "+1" kungenziwanga kuseva, kuvela ukuthi ekhasini lokuqala kufanele sicele amarekhodi kusuka ku-1 kuya ku-51, okwesibili - kusuka ku-51 kuya ku-101, njll. Uma ucacisa usayizi wekhasi elingu-51 futhi ukhuphule Inkomba yekhasi, ikhasi lesibili lizobuya lisuka ku-52 liye ku-102, njll. Ngokufanelekile, ekukhetheni kokuqala, okuwukuphela kwendlela yokufaka kahle inkinobho yokuya ekhasini elilandelayo iwukuba iseva ihlole umugqa "owengeziwe", okuzoba i-nuance ecacile kakhulu.
  • Inketho yesithathu ayiwenzi umqondo nhlobo, njengoba ukuze uqhube imibuzo kusizindalwazi esiningi uzodinga ukudlulisa isibalo kunenkomba yerekhodi lokugcina. Ukukhipha i-startIndex ku-endIndex kungase kube umsebenzi olula we-arithmetic, kodwa kungaphezu kwamandla lapha.

Manje kufanele sichaze ububi bokusebenzisa ikhasi ngokusebenzisa "offset + quantity":

  • Ukubuyisela ikhasi ngalinye elilandelayo kuzobiza kakhulu futhi kuhamba kancane kunedlule, ngoba isizindalwazi sisazodinga ukudlula wonke amarekhodi "kusukela ekuqaleni" ngokuya ngemibandela yokusesha nokuhlunga, bese ima esiqeshini esifunwayo.
  • Akuwona wonke ama-DBMS angasekela le ndlela.

Kukhona ezinye izindlela, kodwa nazo aziphelele. Eyokuqala yalezi zindlela ibizwa ngokuthi “keyset paging” noma “seek method” futhi imi kanje: ngemva kokuthola ingxenye, ungakhumbula amanani enkambu kurekhodi lokugcina ekhasini, bese uwasebenzisa ukuze uthole. ingxenye elandelayo. Isibonelo, senze lo mbuzo olandelayo:

SELECT * FROM Sales.SalesOrderHeader
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Futhi kwirekhodi lokugcina sithole inani ledethi yoku-oda '2014-06-29'. Bese ukuze uthole ikhasi elilandelayo ungazama ukwenza lokhu:

SELECT * FROM Sales.SalesOrderHeader
WHERE OrderDate < '2014-06-29'
ORDER BY OrderDate DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Inkinga ukuthi i-OrderDate iyinkambu engeyona eyingqayizivele futhi isimo esishiwo ngenhla kungenzeka sigeje imigqa eminingi edingekayo. Ukwengeza ukungaqondakali kulo mbuzo, udinga ukungeza inkambu eyingqayizivele kusimo (thatha ngokuthi 75074 inani lokugcina lokhiye oyinhloko kusukela engxenyeni yokuqala):

SELECT * FROM Sales.SalesOrderHeader
WHERE (OrderDate = '2014-06-29' AND SalesOrderID < 75074)
   OR (OrderDate < '2014-06-29')
ORDER BY OrderDate DESC, SalesOrderID DESC
OFFSET 0 ROWS
FETCH NEXT 50 ROWS ONLY

Lolu khetho luzosebenza kahle, kodwa ngokuvamile kuzoba nzima ukukhulisa njengoba isimo siqukethe u-opharetha NOMA. Uma inani lokhiye oyinhloko likhuphuka njengoba i-OrderDate ikhula, isimo singenziwa lula ngokushiya kuphela isihlungi nge-SalesOrderID. Kodwa uma kungekho ukuhlobana okuqinile phakathi kwamanani okhiye oyinhloko kanye nenkambu lapho umphumela uhlelwa khona, lokhu NOMA akunakugwenywa kuma-DBMS amaningi. Okuhlukile engikwaziyo i-PostgreSQL, esekela ngokugcwele ukuqhathanisa kwe-tuple, futhi umbandela ongenhla ungabhalwa njengokuthi "WHERE (OrderDate, SalesOrderID) < ('2014-06-29', 75074)". Njengoba kunikezwe ukhiye oyinhlanganisela onalezi zinkambu ezimbili, umbuzo ofana nalo kufanele ube lula.

Enye indlela yesibili ingatholakala, isibonelo, ku I-ElasticSearch scroll API noma I-Cosmos DB - lapho isicelo, ngaphezu kwedatha, sibuyisela isihlonzi esikhethekile ongathola ngaso ingxenye elandelayo yedatha. Uma lesi sihlonzi sinesikhathi sempilo esingenamkhawulo (njengaku-Comsos DB), khona-ke lena indlela enhle yokusebenzisa ukupeyisha ngoshintsho olulandelanayo phakathi kwamakhasi (inketho #2 eshiwo ngenhla). Okubi okungase kube khona: ayisekelwe kuwo wonke ama-DBMS; isihlonzi sesiqephu esilandelayo esingaba khona singase sibe nokuphila okulinganiselwe, ngokuvamile okungafanelekile ukusebenzisa ukusebenzisana komsebenzisi (okufana ne-ElasticSearch scroll API).

Ukuhlunga okuyinkimbinkimbi

Masiqhubekisele phambili umsebenzi ube nzima. Ake sithi kunesidingo sokuqalisa lokho okubizwa nge-faceted search, okujwayeleke kakhulu kuwo wonke umuntu ovela ezitolo ze-inthanethi. Izibonelo ezingenhla ezisuselwe kuthebula lama-oda azibonisi kakhulu kulokhu, ngakho-ke asishintshele kuthebula Lomkhiqizo kusukela kusizindalwazi se-AdventureWorks:

Imiphumela yosesho nezinkinga zokusebenza
Uyini umbono mayelana nosesho oluhlangene? Iqiniso liwukuthi engxenyeni ngayinye yesihlungi inani lamarekhodi ahlangabezana nalesi simiso liyaboniswa ngokucabangela izihlungi ezikhethiwe kuzo zonke ezinye izigaba.

Isibonelo, uma sikhetha isigaba samabhayisikili nombala Omnyama kulesi sibonelo, ithebula lizobonisa amabhayisikili amnyama kuphela, kodwa:

  • Kumbandela ngamunye eqenjini Lezigaba, inombolo yemikhiqizo evela kuleso sigaba izoboniswa ngomnyama.
  • Kumbandela ngamunye weqembu elithi "Imibala", inombolo yamabhayisikili alo mbala izoboniswa.

Nasi isibonelo somphumela wezimo ezinjalo:

Imiphumela yosesho nezinkinga zokusebenza
Uma futhi uhlola isigaba "Izingubo", ithebula lizophinde libonise izingubo ezimnyama ezisesitokweni. Inombolo yemikhiqizo emnyama esigabeni esithi "Umbala" izophinda ibalwe ngokuvumelana nezimo ezintsha, kuphela esigabeni "Izigaba" akukho okuzoshintsha... Ngethemba ukuthi lezi zibonelo zanele ukuqonda i-algorithm yokusesha enezici ezivamile.

Manje ake sicabange ukuthi lokhu kungenziwa kanjani ngesisekelo sobudlelwano. Iqembu ngalinye lemibandela, njengeSigaba Nombala, lizodinga umbuzo ohlukile:

SELECT pc.ProductCategoryID, pc.Name, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
  INNER JOIN Production.ProductCategory pc ON ps.ProductCategoryID = pc.ProductCategoryID
WHERE p.Color = 'Black'
GROUP BY pc.ProductCategoryID, pc.Name
ORDER BY COUNT(1) DESC

Imiphumela yosesho nezinkinga zokusebenza

SELECT Color, COUNT(1) FROM Production.Product p
  INNER JOIN Production.ProductSubcategory ps ON p.ProductSubcategoryID = ps.ProductSubcategoryID
WHERE ps.ProductCategoryID = 1 --Bikes
GROUP BY Color
ORDER BY COUNT(1) DESC

Imiphumela yosesho nezinkinga zokusebenza
Yini engalungile ngalesi sixazululo? Ilula kakhulu - ayilingani kahle. Isigaba ngasinye sokuhlunga sidinga umbuzo ohlukile ukuze ubale amanani, futhi le mibuzo ayiyona elula kakhulu. Ezitolo eziku-inthanethi, ezinye izigaba zingase zibe nezigaba zokuhlunga eziyishumi nambili, okungaba inkinga yokusebenza kanzima.

Ngokuvamile ngemva kwalezi zitatimende nginikezwa izixazululo, okuyilezi:

  • Hlanganisa zonke izibalo zobuningi embuzweni owodwa. Ngobuchwepheshe lokhu kungenzeka kusetshenziswa igama elingukhiye le-UNION, kodwa ngeke kusize ukusebenza kakhulu - isizindalwazi kusazodingeka sikhiphe izingcezu ngazinye kusukela ekuqaleni.
  • Amanani enqolobane. Lokhu kuphakanyiswa kimi cishe njalo uma ngichaza inkinga. I-caveat ukuthi lokhu ngokuvamile akunakwenzeka. Ake sithi “sinezinhlaka” eziyi-10, ngayinye enamanani angu-5. Lesi yisimo “esinesizotha” kakhulu uma siqhathaniswa nalokho okungabonwa ezitolo ezifanayo ze-inthanethi. Ukukhethwa kwesici sohlangothi olulodwa kuthinta amanani kwamanye angu-9, ngamanye amazwi, kwinhlanganisela ngayinye yemibandela amanani angahluka. Esibonelweni sethu, kukhona inani lemibandela engu-50 umsebenzisi angayikhetha; ngakho-ke, kuzoba nezinhlanganisela ezingaba ngu-250. Ayikho inkumbulo eyanele noma isikhathi sokugcwalisa idatha enjalo. Lapha ungaphikisa futhi uthi akuzona zonke izinhlanganisela ezingokoqobo futhi umsebenzisi akavamile ukukhetha okungaphezu kwezingu-5-10. Yebo, kungenzeka ukwenza ukulayisha okuvilaphayo kanye nokugcinwa kwenani lalokho okuye kwakhethwa, kodwa uma kunezinketho eziningi, i-cache enjalo izoba kancane kancane futhi ibonakale nakakhulu izinkinga zesikhathi sokuphendula (ikakhulukazi uma isethi yedatha ishintsha njalo) .

Ngenhlanhla, inkinga enjalo sekuyisikhathi eside inezixazululo ezisebenza kahle ezisebenza ngokubikezela kumthamo omkhulu wedatha. Kunoma iyiphi yalezi zinketho, kunengqondo ukuhlukanisa ukubalwa kabusha kwama-facets nokwamukela ikhasi lemiphumela libe yizingcingo ezimbili ezifanayo eziya kuseva futhi uhlele isixhumi esibonakalayo somsebenzisi ngendlela yokuthi ukulayisha idatha ngama-facets "akuphazamisi" ukubonisa imiphumela yosesho.

  • Shayela ukubala kabusha okuphelele "kwezingxenye" ​​njengevelakancane ngangokunokwenzeka. Isibonelo, ungabali kabusha yonke into ngaso sonke isikhathi uma isimo sokunquma sishintsha, kodwa kunalokho thola inani eliphelele lemiphumela ehambisana nezimo zamanje futhi utshele umsebenzisi ukuthi azibonise - "amarekhodi angu-1425 atholakele, bonisa?" Umsebenzisi angaqhubeka nokushintsha amagama okusesha noma chofoza inkinobho ethi "bonisa". Esimeni sesibili kuphela lapho zonke izicelo zokuthola imiphumela nokubalwa kabusha kwenani kuwo wonke "ama-facets" zizokwenziwa. Kulokhu, njengoba ubona kalula, kuzodingeka ubhekane nesicelo ukuze uthole inani eliphelele lemiphumela kanye nokwenza kahle kwayo. Le ndlela ingatholakala ezitolo eziningi ezincane ze-inthanethi. Ngokusobala, lokhu akuyona i-panacea yale nkinga, kodwa ezimweni ezilula kungaba ukuyekethisa okuhle.
  • Sebenzisa izinjini zokusesha ukuze uthole imiphumela nokubala izici, ezifana ne-Solr, i-ElasticSearch, i-Sphinx nezinye. Wonke aklanyelwe ukwakha "ama-facets" futhi enze lokhu ngempumelelo ngenxa yenkomba ehlanekezelwe. Izinjini zokusesha zisebenza kanjani, kungani ezimweni ezinjalo zisebenza kangcono kunemininingwane egciniwe yenhloso ejwayelekile, yiziphi izinqubo nezingibe ezikhona - lesi yisihloko sendatshana ehlukile. Lapha ngithanda ukudonsela ukunaka kwakho eqinisweni lokuthi injini yokusesha ayikwazi ukumiselela ukugcinwa kwedatha okuyinhloko, isetshenziswa njengesengezo: noma yiziphi izinguquko kusizindalwazi esiyinhloko ezifanele ukusesha zivumelaniswa kunkomba yokusesha; Injini yokusesha ivamise ukusebenzisana kuphela nenjini yokusesha futhi ayifinyeleli kusizindalwazi esikhulu. Elinye lamaphuzu abaluleke kakhulu lapha indlela yokuhlela lokhu kuvumelanisa ngokwethembeka. Konke kuncike ezimfuneko "zesikhathi sokusabela". Uma isikhathi esiphakathi koshintsho kusizindalwazi esiyinhloko kanye “nokubonakaliswa” kwayo ekusesheni akubalulekile, ungakha isevisi esesha amarekhodi asanda kushintshwa njalo ngemizuzu embalwa bese uwakhomba. Uma ufuna isikhathi esifushane kakhulu sokuphendula, ungasebenzisa into efana nale ibhokisi lokuphumayo lohwebo ukuthumela izibuyekezo kusevisi yokusesha.

okutholakele

  1. Ukusebenzisa ukupeyisha kohlangothi lweseva kuyingqinamba enkulu futhi kunengqondo kuphela ekukhuleni ngokushesha noma amasethi edatha amakhulu. Ayikho iresiphi eqondile ngokuphelele yokulinganisa "okukhulu" noma "okukhula ngokushesha", kodwa ngingalandela le ndlela:
    • Uma uthola iqoqo eliphelele ledatha, kucatshangelwa isikhathi seseva nokudluliswa kwenethiwekhi, kufanelana nezidingo zokusebenza ngokujwayelekile, asikho isidingo sokuqalisa ukuphequlula ohlangothini lweseva.
    • Kungase kube nesimo lapho zingekho izinkinga zokusebenza ezilindelekile esikhathini esizayo esiseduze, njengoba kunedatha encane, kodwa ukuqoqwa kwedatha kukhula njalo. Uma isethi ethile yedatha esikhathini esizayo ingase ingasanelisi iphuzu langaphambilini, kungcono ukuqala ukupeyisha khona manjalo.
  2. Uma kungekho mfuneko eqinile engxenyeni yebhizinisi yokubonisa inani eliphelele lemiphumela noma ukubonisa izinombolo zekhasi, futhi isistimu yakho ingenayo injini yokusesha, kungcono ukungawasebenzisi la maphuzu futhi ucabangele inketho #2.
  3. Uma kunesidingo esicacile sokusesha okuyingxenye, unezinketho ezimbili ngaphandle kokudela ukusebenza:
    • Ungaphindi ubale wonke amanani njalo uma imibandela yosesho ishintsha.
    • Sebenzisa izinjini zokusesha ezifana ne-Solr, i-ElasticSearch, i-Sphinx nezinye. Kodwa kufanele kuqondwe ukuthi angeke kube indawo ye-database eyinhloko, futhi kufanele isetshenziswe njengesengezo kwisitoreji esiyinhloko sokuxazulula izinkinga zokusesha.
  4. Futhi, endabeni yokusesha okuyingxenye, kunengqondo ukuhlukanisa ukubuyiswa kwekhasi lemiphumela yosesho nokubala kube izicelo ezimbili ezifanayo. Ukubala amanani kungase kuthathe isikhathi eside kunokuthola imiphumela, kuyilapho imiphumela ibaluleke kakhulu kumsebenzisi.
  5. Uma usebenzisa isizindalwazi se-SQL ukuze useshe, noma yikuphi ukuguqulwa kwekhodi okuhlobene nale ngxenye kufanele kuhlolwe kahle ukusebenza kwenani elifanele ledatha (kweqa ivolumu kusizindalwazi esibukhoma). Kuyancomeka futhi ukusebenzisa ukuqapha isikhathi sokwenziwa kwemibuzo kuzo zonke izimo zesizindalwazi, futhi ikakhulukazi lapho “bukhoma”. Ngisho noma yonke into yayihamba kahle ngezinhlelo zemibuzo esigabeni sokuthuthukiswa, njengoba umthamo wedatha ukhula, isimo singashintsha ngokuphawulekayo.

Source: www.habr.com

Engeza amazwana