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 pridėtas indeksas viską sulėtina

Apie turinį ir jo patikrą

Šiame straipsnyje

Dienos skaičių lentelė turi vieną raktą: skaitiklį ir datą kartu. Penkios kodo vietos užduoda jai kitą klausimą — ne „šis skaitiklis laikui bėgant“, o „visi skaitikliai šiomis datomis“. Pradinio puslapio galerija, reitingai, svetainės schema, 90 dienų diagrama ir būsenos skaičiai. Be datos stulpelio indekso kiekviena jų skaito visas 114 113 eilučių.

Pridėjus tą indeksą, galerija pagreitėja dešimt kartų. Jis nepridėtas. Štai matavimas, nulėmęs sprendimą.

galerija, viena diena — nuo 61,5 iki 6,1 ms reitingai, 30 dienų — nuo 88,6 iki 89,2 ms svetainės schema, 14 dienų — nuo 79,6 iki 94,8 ms 90 dienų diagrama — nuo 120,0 iki 109,2 ms būsenos skaičiai, 365 dienos — nuo 204,9 iki 225,1 ms viršutinis stulpelis be indekso, apatinis su juo kartu: 555 ms tampa 524 ms

Viena užklausa labai pagreitėjo

Galerija prašo šiandien aktyvių skaitiklių. Be datos indekso ji nuskaito visą lentelę; su juo suranda vieną datą ir perskaito 443 eilutes. 61,5 milisekundės tapo 6,1. Rezultatas akivaizdus, ir jei būtų matuota tik tai, indeksas dabar jau būtų duomenų bazėje.

Dvi užklausos sulėtėjo

Svetainės schema prašo keturiolikos dienų ir sulėtėjo 19 %. Būsenos skaičiai prašo metų ir sulėtėjo 10 %. Abiem atvejais užklausų planuotojas perėjo nuo pirminio rakto prie naujo indekso ir pasirinko blogiau.

Šią dalį verta suprasti, nes tai ne planuotojo klaida. Skaityti intervalą per antrinį indeksą reiškia surasti atitinkančias eilutes indekse ir tada kiekvieną gauti iš lentelės. Siauram pjūviui tai naudinga. Keturiolika dienų iš trylikos mėnesių vis tiek yra daug po vieną gaunamų eilučių, o tiesioginis lentelės nuskaitymas — fizine tvarka, kurią mėgsta diskai ir podėliai, — laimi. Planuotojas to nežino. Jis mato intervalą ir indeksą ir jį pasirenka.

Negalima pasakyti „naudok šį indeksą tik galerijai“. Indeksas prieinamas kiekvienai užklausai, liečiančiai stulpelį, ir planuotojas jį naudos visur, kur, jo vertinimu, turėtų. Pridėti indeksą – pakeisti visas tos lentelės užklausas, o ne vien tą, kuriai jis skirtas.

Kartu – nieko

Per visas penkias 555 milisekundės tapo 524. Pagerėjimas 1,1× – mažame serveryje, kuris šiuos puslapius vis tiek pateikia iš podėlio, dėl to keisti schemos neverta.

Atrodo, kad 90 dienų diagrama pagerėjo 9 %. Tai neįskaičiuojama, ir verta pasakyti kodėl. Kiekviena užklausa matuota tris kartus: be indekso, su juo, tada vėl be jo. Jei antras matavimas be indekso nėra artimas pirmajam, skirtumą lėmė kompiuteris, o ne pakeitimas. 90 dienų diagramos du matavimai be indekso skyrėsi 13,8 % — daugiau nei teigiamas poveikis. Todėl ta eilutė nieko neišmatuoja ir taip pateikiama.

Kaip matuota ir kodėl tai svarbu

Ne veikiančioje lentelėje. Scenarijus ją kopijuoja, dirba su kopija ir pabaigoje ją pašalina. Pridėti indeksą į darbinę lentelę ir žiūrėti, kas nutiks, pavyksta tik kartą kiekvienai staigmenai.

Užklausos tikros, paimtos iš kodo, įskaitant sujungimą su skaitiklių lentele. Ankstesnė šio bandymo versija naudojo supaprastintą pakaitalą ir davė daug įspūdingesnį atsakymą: dvidešimt kartų greičiau. Supaprastintos užklausos iš tiesų niekas nevykdo.

Koks būtų buvęs skaičius

Jei būtų matuota įprastai — paimti lėtai atrodančią užklausą, pamatuoti prieš ir po, — atsakymas būtų „dešimt kartų greičiau, paleidžiam“. Indeksas būtų pridėtas, galerija pagreitėtų, svetainės schema ir būsenos puslapis sulėtėtų, ir niekas jų nesusietų, nes niekas jų nestebėjo.

Toks bendras šio reiškinio principas. Bendros infrastruktūros pakeitimo negalima vertinti tik pagal jį paskatinusį atvejį. Klausimas ne „ar tai padeda tam, į ką žiūriu“, o „kas dar tai liečia ir kas tam nutinka“.

Yra galinti veikti versija: abu stulpelius turintis indeksas su data pirmoje vietoje, kad galerijai būtų galima atsakyti vien iš indekso, negrįžtant į lentelę. Jis taip pat gali nevilioti planuotojo platesniems intervalams. Tai neišmatuota, todėl ne rekomendacija — tai kitas dalykas, kurį verta išbandyti kopijoje.

Reklama