Kreiptis pagalbos

Atsakome el. paštu, dažniausiai per dvi dienas.

Google reCAPTCHA tikrina šį pateikimą, kad apsaugotų nuo piktnaudžiavimo; duomenys siunčiami Google. Scenarijus įkeliamas tik atvėrus šią formą.

← Visi įrašai

Kai podėlis didėja netinkama kryptimi

Apie turinį ir jo patikrą

Šiame straipsnyje

Šios paslaugos podėlio aplanke yra keturi maži failai. Didžiausias – 35 baitų. Kartu jie saugo tris skaitiklių numerius ir skaitomi per kiekvieną skaitiklio užklausą.

Jie reikalingi tam, kad skaičiavimo eigai nereikėtų duomenų bazės klausti keturių klausimų, į kuriuos ji beveik visada atsako „ne“. Ar šis skaitiklis neįtraukia savo savininko apsilankymų? Seka išorinių nuorodų spustelėjimus? Seka kelius per svetainę? Įsikelia iš naujo? Daugiau nei 99 % skaitiklių visi atsakymai yra „ne“, o failą su saujele numerių, kuriems atsakymas „taip“, patikrinti pigiau nei atlikti keturias indeksuotas užklausas.

Tai pigiau. Bet tai toks pigumas, kuris apsiverčia.

2 10 100 1 000 10 000 100 000 visi 2 218 aktyvių skaitiklių: 0,43 ms failas: 0,02 ms su 3 numeriais, 21,4 ms su 100 000 viena indeksuota užklausa: 0,16 ms bet kokiam dydžiui

Kas išmatuota

Tas pats klausimas — „ar šis skaitiklis sąraše?“ — užduotas dviem būdais, su šešiais sąrašo dydžiais. Failo būdas: perskaityti, iškoduoti JSON, ieškoti numerio. Duomenų bazės būdas: viena paruošta užklausa indeksuotame stulpelyje. Po du tūkstančius pakartojimų, penki ratai, paimta mediana.

Šiandienos dydžiu failas laimi aštuonis kartus: 0,0202 milisekundės prieš 0,1630. Ties tūkstančiu numerių jie susilygina. Ties dešimčia tūkstančių failas kainuoja dvylika kartų daugiau, o ties šimtu tūkstančių – 135 kartus daugiau, nes tada tai 578 kilobaitai, kuriuos per kiekvieną peržiūrą reikia perskaityti ir išanalizuoti.

Duomenų bazės linija nejuda. 0,16 milisekundės su dviem eilutėmis ir 0,16 milisekundės su šimtu tūkstančių – tam ir skirtas indeksas, ir lengva pamiršti, kiek darbo slypi už nuobodžiai atrodančios linijos.

Nemalonioji dalis

Susikirtimas yra kažkur tarp 100 ir 1 000 numerių. Ši paslauga turi 2 218 skaitiklių, kurie buvo aktyvūs per pastarąsias trisdešimt dienų.

Taigi jei neįtraukimo funkcija būtų sėkminga — jei kiekvienas skaitiklio savininkas įjungtų „neskaičiuoti mano apsilankymų“, — faile būtų 2 218 numerių, jis svertų 11 kilobaitų ir kainuotų 0,43 milisekundės per peržiūrą vietoj 0,02. Esant vakarykštėms 18 423 peržiūroms, tai aštuonios darbo sekundės per dieną, kad būtų išvengta užklausos, kuri užtruktų tris.

Optimizavimas greičiausias, kai funkcija naudojama mažiausiai. Jis nelėtėja palaipsniui nuo apkrovos kaip lėta užklausa. Jis lėtėja nuo naudojimo paplitimo – vienos ašies, kurios niekas nestebi, nes paplitimo augimas turėtų būti gera žinia.

Kodėl jis tebėra

Nes šiandien jis tinkamas, ir „tinkamas šiandien“ gali būti priežastis, jei kas nors užrašė, kada tai nustoja būti tiesa.

Trys numeriai trijuose failuose. Aštuonis kartus pigiau nei alternatyva kompiuteryje, kuriame skaičiavimo eiga vienintelė privalo būti greita. Dabar pakeitus jį pralaiminčia užklausa, būtų gauta blogesnė sistema, pateisinta hipotetine prielaida.

Jam reikia pavojaus signalo, o ne perrašymo. Failas ir taip rašomas iš duomenų bazės kodu, keičiančiu nuostatą, — ten natūralu pastebėti, kad sąrašas peržengė kelis šimtus įrašų, ir apie tai pasakyti. Podėlis su dokumentuota riba yra sprendimas. Podėlis be jos – lažybos, su kuriomis niekas nesutiko.

Bendras principas

Tai ne argumentas prieš podėlį faile. Tai argumentas žinoti, kuria kryptimi jis didėja.

Dauguma podėlių esant apkrovai gerėja: daugiau užklausų, daugiau pataikymų, geresnis santykis. Šis kitoks. Jo vienos užklausos kaina priklauso nuo saugomų duomenų kiekio, o jų kiekis auga kartu su tuo, ką paslauga siekia skatinti. Kiekvienas skaitymas sumoka už kiekvieną įrašą, įskaitant 2 215, nesusijusių su šiuo metu skaičiuojamu lankytoju.

Kiekvienos atmintyje ar faile laikomos paieškos lentelės verta klausti ne „kaip greitai veikia“, o „kas ją didina ir kas nutinka, kai tam sekasi“. Jei atsakymas – „lėtėja“, dydžio riba turi būti kode greta failą rašančios vietos jau sukūrimo dieną.

Reklama