muistin välimuistiin tallentaminen (usein yksinkertaisesti välimuistiin tallentaminen) on tekniikka, jossa tietokonesovellukset tallentavat tilapäisesti tietoja tietokoneen päämuistiin (eli satunnaismuistiin tai RAM-muistiin), jotta nämä tiedot voidaan hakea nopeasti. Väliaikaiseen säilytykseen käytettävää RAM-muistia kutsutaan kätköksi. Koska RAM-muistin käyttö on huomattavasti nopeampaa kuin muiden medioiden, kuten kiintolevyjen tai verkkojen, käyttö, välimuistiin tallentaminen auttaa sovelluksia toimimaan nopeammin, koska tietojen saatavuus on nopeampaa. Välimuistiin tallentaminen on erityisen tehokasta silloin, kun sovellus esittelee yhteistä kaavaa, jossa se toistuvasti pääsee käsiksi aiemmin käytettyihin tietoihin. Välimuistiin tallentaminen on hyödyllistä myös sellaisten datalaskelmien tallentamiseksi, joiden laskeminen on muuten aikaa vievää. Tallentamalla laskelmat välimuistiin järjestelmä säästää aikaa välttämällä laskennan toistamista.
miten muistin välimuistiin tallentaminen toimii?
Muistikätköily toimii siten, että välimuistina käytetään ensin osa RAM-muistia. Kun sovellus yrittää lukea tietoja, tyypillisesti tietojen tallennusjärjestelmästä kuten tietokannasta, se tarkistaa, onko haluttu tallenne jo välimuistissa. Jos näin käy, sovellus lukee välimuistin tiedot, mikä poistaa hitaamman pääsyn tietokantaan. Jos haluttu tietue ei ole välimuistissa, sovellus lukee tietueen lähteestä. Kun se hakee kyseisen tiedon, se myös kirjoittaa tiedot välimuistiin niin, että kun sovellus tarvitsee tulevaisuudessa samat tiedot, se voi saada ne nopeasti välimuistista.
koska välimuisti on kooltaan rajallinen, lopulta osa jo kätkössä olevasta datasta joudutaan poistamaan, jotta saadaan tilaa uudelle datalle, jota sovellus viimeksi käytti. Tämä tarkoittaa, että välimuistijärjestelmä tarvitsee strategian, jonka pohjalta tietueet pitää poistaa, jotta tilaa saadaan. Strategia riippuu luonteesta sovelluksen tietojen käyttöoikeudet, ja yleensä yrittää poistaa tietueita, joita ei odoteta käyttää uudelleen pian. Esimerkiksi vähiten käytetty strategia (LRU) poistaa tietueen, jonka viimeinen käyttöoikeus oli ennen mitään muuta tallennetta välimuistissa. Oletus tässä on, että jos tietueen käyttämisestä on kulunut pitkä aika, sitä ei todennäköisesti saada pian uudelleen käyttöön. Tai toisin sanoen viime aikoina eniten käytettyjä levyjä tullaan todennäköisesti käyttämään pian uudelleen. Vähiten käytetty (lfu) strategia edellyttää seuranta määrä pääsyä kunkin tietueen välimuistissa ja poistamalla tietueen vähiten pääsyjä. Oletus tässä on, että harvoin käytettyä tietuetta ei todennäköisesti käytetä pian uudelleen.
haasteena kätköissä on, miten minimoidaan ”välimuistin huti”, ts., yritti lukea sovelluksen tietueita, jotka eivät ole välimuistissa. Jos sinulla on liikaa huteja, välimuistin tehokkuus laskee. Sovellus, joka vain lukee uutta tietoa ei hyötyisi välimuisti, ja itse asiassa, näyttäisivät vähemmän suorituskykyä, koska ylimääräistä työtä tarkistaa välimuisti vielä ei löydä haluttu ennätys se. Yksi tapa, jolla tätä haastetta voidaan lieventää, on hyödyntää suurempia kätköjä. Tämä ei useinkaan ole käytännöllistä yhdellä tietokoneella, minkä vuoksi hajautetut välimuistit ovat suosittuja valintoja sellaisten sovellusten nopeuttamiseksi, joiden on päästävä käsiksi suurempiin tietokokonaisuuksiin. Hajautettu välimuisti yhdistää klusteriin kytkettyjen useiden tietokoneiden RAM-muistin, jotta voit luoda suuremman välimuistin, joka voi jatkaa kasvuaan lisäämällä klusteriin lisää tietokoneita. Hazelcast IMDG: n kaltaisia teknologioita voidaan käyttää hajautettuna klusterina nopeuttamaan laajamittaisia sovelluksia.
toinen kätköjen haaste on ”tunkkaisen” tiedon lukemisen vaara, jossa välimuistin tiedot eivät heijasta taustalla olevan lähteen viimeisintä tietoa. Usein tämä riski on hyväksyttävä kompromissi vuoksi sovelluksen suorituskykyä. Jos näin ei ole, on taustalla olevaa tietolähdettä päivittävän sovelluksen tehtävä päivittää kyseinen tallenne välimuistissa.
esimerkki käyttötapauksista
yksi laaja käyttötapaus muistikätköilyssä on nopeuttaa tietokantasovelluksia, erityisesti niitä, jotka suorittavat monia tietokantalukuja. Korvaamalla osan tietokantalukemista välimuistin lukemisella sovellukset voivat poistaa latenssin, joka syntyy usein tietokantaliittymistä. Tämä käyttötapaus esiintyy tyypillisesti ympäristöissä, joissa nähdään suuri määrä dataa, kuten suuren liikenteen www-sivustolla, joka sisältää dynaamista sisältöä tietokannasta.
toinen käyttötapaus on kyselykiihdytys, jossa monimutkaisen tietokantakyselyn tulokset tallennetaan välimuistiin. Monimutkaiset kyselyt toimintojen, kuten ryhmittelyn ja järjestyksen, suorittaminen voi viedä huomattavan paljon aikaa. Jos kyselyjä suoritetaan toistuvasti, kuten monien käyttäjien käyttämässä business intelligence (BI) – kojelaudassa, tulosten tallentaminen välimuistiin mahdollistaisi suuremman reagointikyvyn kyseisissä kojelaudoissa.
Aiheeseen Liittyviä Aiheita
JCache / Java Cache
Cache Miss
Hibernate Second-Level Cache
Lisätietoja
Caching Use Case
Database Caching
Hazelcast Cloud
Välimuistista Tehty Bootiful: Spring Cache + Hazelcast