Kontaktovať podporu

Odpovedáme e-mailom, zvyčajne do dvoch dní.

Google reCAPTCHA kontroluje toto podanie na ochranu pred zneužitím; údaje sa prenášajú spoločnosti Google. Skript sa načíta až pri otvorení tohto formulára.

← Všetky príspevky

Keď vyrovnávacia pamäť škáluje opačne

O obsahu a jeho overovaní

V tomto článku

V priečinku vyrovnávacej pamäte tejto služby sú štyri malé súbory. Najväčší má 35 bajtov. Spolu uchovávajú tri čísla počítadiel a čítajú sa pri každej jednej požiadavke na počítadlo.

Existujú preto, aby sa mechanizmus počítania nemusel pýtať databázy štyri otázky, na ktoré takmer vždy odpovedá „nie“. Vylučuje toto počítadlo vlastné návštevy vlastníka? Sleduje odchádzajúce kliknutia? Sleduje cesty cez web? Znovu sa samo načítava? Pri viac než 99 % počítadiel je každá odpoveď nie a nahliadnutie do súboru s hŕstkou čísel, kde je odpoveď áno, je lacnejšie než štyri indexované dopyty.

Je to lacnejšie. Je to tiež druh lacnosti, ktorý sa obráti.

2 10 100 1 000 10 000 100 000 všetkých 2 218 aktívnych počítadiel: 0,43 ms súbor: 0,02 ms pri 3 číslach, 21,4 ms pri 100 000 jeden indexovaný dopyt: 0,16 ms pri každej veľkosti

Čo sa meralo

Tá istá otázka — „je toto počítadlo v zozname?“ — položená dvoma spôsobmi pri šiestich veľkostiach zoznamu. Súborový spôsob: prečítať ho, dekódovať JSON, vyhľadať číslo. Databázový spôsob: jeden pripravený príkaz nad indexovaným stĺpcom. Po dvetisíc opakovaní, päť kôl, použitý medián.

Pri dnešnej veľkosti súbor vyhráva osemnásobne: 0,0202 milisekundy oproti 0,1630. Pri tisícke čísel sú vyrovnané. Pri desiatich tisícoch súbor stojí dvanásťkrát viac a pri stotisíc 135-krát viac, pretože vtedy treba pri každom zobrazení prečítať a spracovať 578 kilobajtov.

Databázová čiara sa nehýbe. 0,16 milisekundy pri dvoch riadkoch a 0,16 milisekundy pri stotisíc: na to je index a ľahko sa zabúda, koľko práce sa skrýva za nudným vzhľadom tejto čiary.

Nepríjemná časť

Bod priesečníka je niekde medzi 100 a 1 000 číslami. Táto služba má 2 218 počítadiel, ktoré boli aktívne za posledných tridsať dní.

Ak by teda funkcia vylúčenia uspela — ak by každý s počítadlom zapol „nepočítať moje vlastné návštevy“ — súbor by obsahoval 2 218 čísel, mal by 11 kilobajtov a stál by 0,43 milisekundy na zobrazenie namiesto 0,02. Pri včerajších 18 423 zobrazeniach je to osem sekúnd práce denne na vyhnutie sa dopytu, ktorý by trval tri.

Optimalizácia je najrýchlejšia vtedy, keď sa funkcia používa najmenej. Nespomaľuje sa postupne so záťažou ako pomalý dopyt. Spomaľuje sa s prijatím funkcie, čo je jediná os, ktorú nikto nesleduje, pretože rastúce prijatie má byť dobrou správou.

Prečo je to stále tu

Pretože je to správne dnes a „správne dnes“ smie byť dôvodom niečoho, pokiaľ niekto zapísal, kedy to prestane platiť.

Tri čísla v troch súboroch. Osemkrát lacnejšie než alternatíva na stroji, kde jedinou vecou, ktorá musí byť rýchla, je mechanizmus počítania. Ak by sa toto riešenie teraz nahradilo dopytom, nad ktorým má navrch, vznikol by horší systém zdôvodnený hypotézou.

Potrebuje signalizáciu hranice, nie prepis. Súbor sa aj tak zapisuje z databázy kódom meniacim nastavenie — to je prirodzené miesto na to, aby sa zistilo, že zoznam prerástol niekoľko stoviek položiek, a oznámilo sa to. Vyrovnávacia pamäť so zdokumentovaným stropom je rozhodnutie. Bez neho je to stávka, s ktorou nikto nesúhlasil.

Všeobecný tvar

Toto nie je argument proti vyrovnávacej pamäti v súbore. Je to argument pre poznanie smeru jej škálovania.

Väčšina vyrovnávacích pamätí sa pri záťaži zlepšuje: viac požiadaviek, viac zásahov, lepší pomer. Táto je opačný druh. Jej náklady na požiadavku sú funkciou množstva uchovávaných údajov a toto množstvo rastie s tým, čo sa služba snaží podporovať. Každé čítanie platí za každú položku vrátane 2 215 tých, ktoré vôbec nesúvisia s práve počítaným návštevníkom.

Pri každej vyhľadávacej tabuľke uchovávanej v pamäti alebo súbore sa treba pýtať nie „aká je rýchla“, ale „čo ju zväčšuje a čo sa stane, keď sa tomu darí“. Ak odpoveď znie „spomalí sa“, veľkostný limit patrí do kódu vedľa miesta, ktoré súbor zapisuje, už v deň vytvorenia.

Reklama