Kontaktoni mbështetjen

Përgjigjemi me email. Zakonisht brenda dy ditësh.

Për mbrojtje nga abuzimi, Google reCAPTCHA kontrollon këtë dërgesë. Gjatë kësaj, të dhënat i transmetohen kompanisë Google. Skripti ngarkohet vetëm kur hapet ky formular.

← Të gjitha postimet

Kur shtimi i një indeksi i ngadalëson gjërat

Për përmbajtjen dhe kontrollin e saj

Në këtë artikull

Tabela e shifrave ditore ka një çelës: numëruesin dhe datën së bashku. Pesë vende në kod bëjnë pyetje tjetër — jo „ky numërues gjatë kohës“, por „të gjithë numëruesit në këto data“. Galeria e faqes kryesore, renditja, harta e uebsajtit, një grafik 90-ditor dhe shifrat e gjendjes. Pa indeks mbi kolonën e datës, secila lexon të gjithë 114 113 rreshtat.

Shtimi i atij indeksi e bën galerinë dhjetë herë më të shpejtë. Nuk u shtua. Ja matja që e vendosi.

galeria, një ditë — 61,5 në 6,1 ms renditja, 30 ditë — 88,6 në 89,2 ms harta e uebsajtit, 14 ditë — 79,6 në 94,8 ms grafiku 90-ditor — 120,0 në 109,2 ms shifrat e gjendjes, 365 ditë — 204,9 në 225,1 ms shiriti sipër pa indeks, poshtë me të së bashku: 555 ms bëhen 524 ms

Një kërkesë u bë shumë më e shpejtë

Galeria kërkon numëruesit aktivë sot. Pa indeks mbi datën skanon gjithë tabelën; me indeks kërkon një datë të vetme dhe lexon 443 rreshta. 61,5 milisekonda u bënë 6,1. Ky nuk është rezultat i padukshëm dhe, po të ishte matur vetëm kjo, indeksi tani do të ishte në bazën e të dhënave.

Dy kërkesa u ngadalësuan

Harta e uebsajtit kërkon katërmbëdhjetë ditë dhe u ngadalësua me 19%. Shifrat e gjendjes kërkojnë një vit dhe u ngadalësuan me 10%. Në të dy rastet planifikuesi i kërkesave kaloi nga çelësi parësor te indeksi i ri dhe bëri zgjedhje më të keqe.

Kjo pjesë ia vlen të kuptohet, sepse nuk është gabim i planifikuesit. Leximi i një intervali përmes indeksit dytësor kërkon gjetjen e rreshtave përkatës në indeks dhe pastaj marrjen e secilit nga tabela. Për një pjesë të ngushtë ia vlen. Për katërmbëdhjetë ditë nga trembëdhjetë muaj, mbeten shumë rreshta të marrë një nga një dhe skanimi i drejtpërdrejtë i tabelës — leximi sipas rendit fizik, që u përshtatet disqeve dhe memories së ndërmjetme — e mund. Planifikuesi nuk e di këtë. Sheh interval dhe indeks dhe e zgjedh.

Nuk ka mënyrë të thuhet „përdore këtë indeks vetëm për galerinë“. Indeksi është i disponueshëm për çdo kërkesë që prek kolonën dhe planifikuesi do ta përdorë kudo ku vlerësimet i thonë se duhet. Shtimi i tij ndryshon çdo kërkesë në atë tabelë, jo vetëm atë për të cilën ishte menduar.

Së bashku, asgjë

Në të pesta, 555 milisekonda u bënë 524. Përmirësim 1,1×, që në një server të vogël ku këto faqe gjithsesi shërbehen nga memoria e ndërmjetme nuk ia vlen ndryshimin e skemës.

Grafiku 90-ditor duket se u përmirësua me 9%. Nuk përfshihet dhe ia vlen të thuhet pse. Çdo kërkesë u mat tri herë: pa indeks, me të, pastaj sërish pa të. Nëse ekzekutimi i dytë pa indeks nuk del afër të parit, ndryshimi erdhi nga makina, jo nga ndërhyrja. Për grafikun 90-ditor, dy ekzekutimet pa indeks ndryshuan me 13,8% — më shumë se efekti i pretenduar. Prandaj ai rresht nuk mat asgjë dhe raportohet si i tillë.

Si u mat dhe pse ka rëndësi

Jo në tabelën aktive. Skripti e kopjon, punon mbi kopje dhe e heq kopjen në fund. Shtimi i një indeksi në tabelë prodhimi për të parë çfarë ndodh funksionon vetëm një herë për çdo befasi.

Kërkesat janë të vërtetat, të marra nga kodi, përfshirë bashkimin me tabelën e numëruesve. Një version i mëparshëm i testit përdorte zëvendësues të thjeshtuar dhe dha përgjigje shumë më emocionuese: njëzet herë më shpejt. Kërkesën e thjeshtuar nuk e ekzekuton realisht asgjë.

Çfarë do të kishte qenë shifra

Po të ishte matur në mënyrën e zakonshme — merre kërkesën që duket e ngadaltë, mat kohën para dhe pas — përgjigjja do të ishte „dhjetë herë më shpejt, publikoje“. Indeksi do të shtohej, galeria do të përshpejtohej, harta e uebsajtit dhe faqja e gjendjes do të ngadalësoheshin dhe askush nuk do t'i lidhte, sepse askush nuk i vëzhgonte ato.

Ky është modeli i përgjithshëm. Ndryshimi në infrastrukturë të përbashkët nuk mund të vlerësohet vetëm mbi rastin që e nxiti. Pyetja nuk është „a e ndihmon këtë që shoh“, por „çfarë tjetër e prek këtë dhe çfarë i ndodh asaj“.

Ka një version që mund të funksionojë: indeks me të dyja kolonat, datën të parën, që galeria të marrë përgjigje vetëm nga indeksi pa u kthyer te tabela. Mund të shmangë edhe tundimin e planifikuesit për intervalet më të gjera. Kjo nuk është matur, prandaj nuk është rekomandim — është gjëja e radhës për t'u provuar në kopje.

Reklamë