Võtke ühendust toega

Vastame e-postiga, tavaliselt kahe päeva jooksul.

Väärkasutuse vältimiseks kontrollib seda saadetist Google reCAPTCHA. Seejuures edastatakse andmeid Googlele. Skript laaditakse alles selle vormi avamisel.

← Kõik postitused

Kui indeksi lisamine muudab asjad aeglasemaks

Sisust ja selle ülevaatamisest

Selles artiklis

Päevaarvude tabelil on üks võti: loendur ja kuupäev koos. Viis kohta koodis esitavad sellele teistsuguse küsimuse — mitte „see loendur aja jooksul“, vaid „kõik loendurid neil kuupäevadel“. Avalehe galerii, edetabel, saidikaart, 90-päevane diagramm ja olekunumbrid. Ilma kuupäevaveeru indeksita loeb iga neist kõiki 114 113 rida.

Selle indeksi lisamine muudab galerii kümme korda kiiremaks. Seda ei lisatud. Siin on mõõtmine, mis otsustas.

galerii, üks päev — 61,5 kuni 6,1 ms edetabel, 30 päeva — 88,6 kuni 89,2 ms saidikaart, 14 päeva — 79,6 kuni 94,8 ms 90-päevane diagramm — 120,0 kuni 109,2 ms olekunumbrid, 365 päeva — 204,9 kuni 225,1 ms ülemine riba ilma indeksita, alumine sellega kokku: 555 ms asemel 524 ms

Üks päring läks palju kiiremaks

Galerii küsib loendureid, mis olid täna aktiivsed. Ilma kuupäeva indeksita skaneerib see kogu tabeli; indeksiga otsib see ühe kuupäeva ja loeb 443 rida. 61,5 millisekundist sai 6,1 millisekundit. See ei ole peen tulemus ja kui see oleks olnud ainus mõõdetu, oleks indeks praegu andmebaasis.

Kaks päringut läks aeglasemaks

Saidikaart küsib neljateistkümmet päeva ja sai 19% aeglasem. Olekunumbrid küsivad aastat ja said 10% aeglasemaks. Mõlemal juhul lülitus päringuplaneerija primaarvõtmelt uuele indeksile ja tegi halvema valiku.

Seda tasub mõista, sest see ei ole planeerija viga. Vahemiku lugemine sekundaarse indeksi kaudu tähendab, et indeksist leitakse sobivad read ja siis tuuakse igaüks tabelist. Kitsa lõigu puhul on see soodne tehing. Neljateistkümne päeva puhul kolmeteistkümnest kuust on see siiski palju ridu, mis tuuakse ükshaaval, ja tabeli sirge skaneerimine — lugemine füüsilises järjekorras, mida kettad ja vahemälud armastavad — võidab selle. Planeerija seda ei tea. See näeb vahemikku ja indeksit ning võtab selle.

Ei ole võimalust öelda „kasuta seda indeksit ainult galerii jaoks“. Indeks on kättesaadav igale päringule, mis veergu puudutab, ja planeerija kasutab seda kõikjal, kus selle hinnangud ütlevad. Ühe lisamine on muudatus igale tabeli päringule, mitte ainult sellele, mille jaoks see mõeldud oli.

Kokku: mitte midagi

Kõigi viie peale sai 555 millisekundist 524 millisekundit. See on 1,1× paranemine, mis väikese serveri puhul, mis neid lehti nagunii vahemälust teenindab, ei ole skeemimuudatust väärt.

90-päevane diagramm näib paranenud 9% võrra. Seda ei arvestata ja tasub öelda, miks. Iga päringut mõõdeti kolm korda: ilma indeksita, sellega, siis jälle ilma. Kui teine ilma indeksita käik ei lange esimese lähedale, oli erinevus masinas, mitte muudatuses. 90-päevase diagrammi puhul erinesid kaks ilma indeksita käiku 13,8% võrra — rohkem kui väidetav mõju. Seega see rida ei mõõda midagi ja seda esitatakse mitte millegina.

Kuidas seda mõõdeti ja miks see loeb

Mitte tegelikul tabelil. Skript kopeerib selle, töötab koopial ja kustutab koopia lõpus. Indeksi lisamine toodangutabelile, et näha, mis juhtub, töötab ainult üks kord ühe üllatuse kohta.

Päringud on päris, koodist võetud, sealhulgas liit loenduritabeliga. Selle testi varasem versioon kasutas lihtsustatud asendajat ja andis palju põnevama vastuse: kakskümmend korda kiirem. Lihtsustatud päring ei olnud midagi, mida tegelikult keegi käivitab.

Mis oleks arv olnud

Kui seda oleks mõõdetud tavapärasel viisil — võta päring, mis tundub aeglane, mõõda enne ja pärast — oleks vastus olnud „kümme korda kiirem, saada ära“. Indeks oleks läinud sisse, galerii oleks läinud kiiremaks, saidikaart ja olekuleht oleksid läinud aeglasemaks ja keegi poleks neid kahte ühendanud, sest keegi ei vaadanud neid.

See on selle üldine kuju. Jagatud infrastruktuuri muudatust ei saa hinnata juhtumi alusel, mis seda ajendas. Küsimus ei ole „kas see aitab seda, mida ma vaatan“, vaid „mis seda veel puudutab ja mis sellega juhtub“.

On versioon, mis võib töötada: indeks, mis kannab mõlemat veergu, kuupäev esimesena, nii et galeriile saab vastata ainult indeksist, ilma tabelisse tagasi minemata. See võib ka vältida planeerija ahvatlemist laiemate vahemike puhul. Seda ei ole mõõdetud, seega see ei ole soovitus — see on järgmine asi, mida koopiale panna.

Reklaam