N'chifukwa chiyani mukufunikira chithandizo chothandizira pagination pa makiyi?
Moni nonse! Ndine wopanga kumbuyo ndikulemba ma microservices ku Java + Spring. Ndimagwira ntchito m'modzi mwamagulu opanga zinthu zamkati ku Tinkoff.
Mu gulu lathu, funso lokonzekera mafunso mu DBMS nthawi zambiri limabuka. Nthawi zonse mumafuna kukhala othamanga pang'ono, koma simungathe kupitilira ndi ma index opangidwa mwanzeru - muyenera kuyang'ana njira zina zogwirira ntchito. M'modzi mwamaulendo awa pa intaneti posaka kukhathamiritsa koyenera mukamagwira ntchito ndi nkhokwe, ndapeza Marcus Wynand's blog yothandiza kosatha, wolemba wa SQL Performance Explained. Uwu ndiye mtundu wosowa wabulogu womwe mutha kuwerenga zolemba zonse motsatana.
Ndikufuna kumasulira nkhani yaifupi ya Marcus kwa inu. Itha kutchedwa kuti ndi manifesto yomwe ikufuna kukopa chidwi zakale, komabe vuto lofunikira la magwiridwe antchito molingana ndi muyezo wa SQL.
M'malo ena ndidzawonjezera wolemba ndi mafotokozedwe ndi ndemanga. Nditchula malo onsewa kuti "pafupifupi." kuti mumve zambiri
Mawu oyamba ochepa
Ndikuganiza kuti anthu ambiri amadziwa momwe zimavutira komanso pang'onopang'ono kugwira ntchito ndi tsamba lomwe limasankha kudzera pa offset. Kodi mumadziwa kuti itha kusinthidwa mosavuta ndi kapangidwe koyenera?
Chifukwa chake, mawu osakira amauza nkhokwe kuti mudumphe zolemba zoyamba za pempholo. Komabe, nkhokweyo ikufunikabe kuwerenga zolemba zoyamba za n kuchokera ku disk, mu dongosolo lomwe laperekedwa (zindikirani: gwiritsani ntchito kusanja ngati zatchulidwa), ndipo pokhapokha pamene zidzatheka kubwezeretsa zolemba kuchokera ku n + 1 kupita mtsogolo. Chochititsa chidwi kwambiri ndi chakuti vuto siliri mu kukhazikitsidwa kwapadera mu DBMS, koma mu tanthauzo loyambirira molingana ndi muyezo:
β¦mizere imasanjidwa molingana ndi ndiyeno kuchepetsedwa poponya chiwerengero cha mizere yotchulidwa mu kuyambira pachiyambiβ¦
-SQL:2016, Part 2, 4.15.3 Derived tables (zindikirani: panopa amagwiritsidwa ntchito kwambiri)
Mfundo yofunikira apa ndikuti kuchotsera kumatenga gawo limodzi - kuchuluka kwa zolemba kuti mulumphe, ndi momwemo. Potsatira tanthauzo ili, DBMS ikhoza kungotenga zolemba zonse ndikutaya zosafunikira. Mwachiwonekere, kutanthauzira uku kwa offset kumatikakamiza kuchita ntchito yowonjezera. Ndipo zilibe kanthu kaya ndi SQL kapena NoSQL.
Kupweteka pang'ono chabe
Mavuto ndi offset samatha pamenepo, ndipo chifukwa chake. Ngati, pakati pa kuwerenga masamba awiri a data kuchokera ku disk, ntchito ina imayika mbiri yatsopano, chidzachitike ndi chiyani pamenepa?
Chithunzichi chikuwonetseratu izi. Maziko amawerenga zolemba zoyamba za 10, pambuyo pake zolemba zatsopano zimayikidwa, zomwe zimachotsa zolemba zonse zowerengedwa ndi 1. Kenaka maziko amatenga tsamba latsopano kuchokera ku zolemba za 10 ndipo sayamba kuchokera ku 11, monga momwe ziyenera kukhalira, koma kuchokera ku 10, kubwereza zolemba izi. Palinso zolakwika zina zomwe zimagwirizanitsidwa ndi kugwiritsa ntchito mawuwa, koma izi ndizofala kwambiri.
Monga tadziwira kale, izi sizovuta za DBMS kapena kukhazikitsa kwawo. Vuto ndi kufotokozera zamitundu molingana ndi muyezo wa SQL. Timauza DBMS kuti ndi tsamba liti loti mutenge kapena marekodi angati oti mulumphe. Nawonsokasi sikutha kukhathamiritsa pempho loterolo, chifukwa pali chidziwitso chochepa pa izi.
Ndikoyeneranso kufotokozera kuti ili si vuto ndi mawu osakira, koma ndi semantics ya funsolo. Pali ma syntaxes enanso angapo omwe ali ofanana muzovuta zawo:
Ngati mugwiritsa ntchito mayankho okonzeka omwe mukuganiza kuti ndi oyenera kuthandizidwa ndi makiyi a pagination, pangani pempho kapena perekani yankho lokonzekera, ngati kuli kotheka. Mukhozanso kulumikiza nkhaniyi.
Pomaliza
Chifukwa chomwe njira yosavuta komanso yothandiza ngati kuyika makiyi ndi makiyi sikufalikira sikuti ndizovuta kukhazikitsa mwaukadaulo kapena kumafuna khama lililonse. Chifukwa chachikulu ndikuti ambiri amazolowera kuwona ndikugwira ntchito ndi offset - njira iyi imayendetsedwa ndi muyezo womwewo.
Chotsatira chake, ndi anthu ochepa omwe amalingalira za kusintha njira yachikunja, ndipo chifukwa cha izi, thandizo la zida kuchokera kumapangidwe ndi malaibulale zikukula bwino. Choncho, ngati lingaliro ndi cholinga cha offset-free pagination chiri pafupi ndi inu, thandizani kufalitsa!