Hacker News

Þrjú skyndiminni lög milli vals og disks

Þrjú skyndiminni lög milli vals og disks Í þessari könnun er kafað í þrennt, þar sem mikilvægi þess og hugsanleg áhrif eru skoðuð. Farið yfir kjarnahugtök Þetta efni kannar: Grundvallarreglur og kenningar Practica...

9 min read Via frn.sh

Mewayz Team

Editorial Team

Hacker News

Þegar forritið þitt sendir frá sér SELECT yfirlýsingu snertir sú fyrirspurn næstum aldrei snúningsdisk eða jafnvel hráa flassgeymslu – hún fer í gegnum þrjú aðskilin skyndiminnislög sem ákvarða hljóðlaust hvort svar þitt berist á míkrósekúndum eða millisekúndum. Skilningur á þessum lögum er munurinn á viðskiptavettvangi sem stækkar áreynslulaust og þess sem spennist undir raunverulegu álagi.

Hvað gerist á því augnabliki sem SELECT fyrirspurn fer frá umsókn þinni?

Þegar forritið þitt sendir SELECT fyrirspurn fer það inn í leiðslu sem flestir verktaki skoða aldrei. Gagnagrunnsvélin grípur beiðnina áður en einhver I/O á sér stað, flokkar SQL inn í innri framkvæmdaráætlun og leitar strax í fyrstu varnarlínu hennar: skyndiminni fyrirspurnarniðurstöðu. Ef sams konar fyrirspurn með sömu færibreytum var keyrð nýlega getur vélin skilað niðurstöðusetti í skyndiminni án þess að snerta eina síðu af gögnum. Þetta er stundum kallað fyrirspurnarskyndiminni eða niðurstöðuskyndiminni og á vinnuálagi sem er mikið lesið og lítið skrifað – eins og greiningarmælaborð og skýrslueiningar – getur það útrýmt miklum meirihluta diskalestra alfarið.

Mikilvæga innsýn hér er að skyndiminni fyrirspurnarinnar er mjög viðkvæmt fyrir stökkbreytingum á gögnum. Sérhver INSERT, UPDATE eða DELETE gegn undirliggjandi töflu ógildir viðeigandi skyndiminni niðurstöður. Þetta er ástæðan fyrir því að skrifþung viðskiptakerfi slökkva oft á skyndiminni fyrirspurnarinnar og treysta á dýpri lögin í staðinn.

Hvað er biðminni og hvers vegna skiptir hún meira máli en þú heldur?

Annað skyndiminnilagið – og að öllum líkindum það mikilvægasta í framleiðslukerfum – er bufferpool (kallað sameiginlegi biðminni í PostgreSQL, InnoDB biðminni í MySQL). Þetta er svæði í vinnsluminni sem gagnagrunnsvélin notar til að geyma nýlega aðgangssíður. Þegar ekki er hægt að afgreiða fyrirspurn úr skyndiminni niðurstöðunnar, athugar vélin hvort nauðsynlegar gagnasíður séu nú þegar búnar í biðminni áður en hún gefur út disklestur.

Biðminnisafnið starfar á meginreglunni um tímabundin og staðbundin staðsetning: gögn sem nýlega hafa verið opnuð verða að öllum líkindum opnuð aftur og gögn sem geymd eru nálægt gögnum sem eru geymd er líklegt til að nálgast fljótlega. Gagnagrunnsstjórar stilla stærð biðminni sem ein af mestu skiptiákvörðunum um stillingar sem þeir taka. Of lítill biðminni veldur stöðugu brottflutningi síðunnar, sem veldur fyrirbæri sem kallast þröst, þar sem kerfið eyðir meiri tíma í að stjórna skyndiminni en að framkvæma fyrirspurnir.

Lykilinnsýn: Í flestum OLTP vinnuálagi þýðir vel stór biðminni að 95–99% af öllum lestri gagna eru afgreidd úr vinnsluminni. Vinnusettið - undirmengi gagna þinna sem fyrirspurnir snerta í raun oft - er oft mun minna en heildarstærð gagnagrunnsins. Að stærð biðminni þinnar til að passa vinnusettið þitt, ekki allt gagnasafnið þitt, er eina stillingaraðgerðin sem skilar hæstu arðsemi sem þú getur gripið til.

Hvernig fyllir skyndiminni stýrikerfisins upp bilið milli vinnsluminni og disks?

Jafnvel þegar eigin biðminni gagnagrunnsins sleppur, er fyrirspurn ekki enn ætluð fyrir sanna disklestur. Stýrikerfið heldur úti síðuskyndiminni (einnig kallað skyndiminni skráakerfisins), svæði kjarnastýrðs vinnsluminni sem bætir lestur og skrifar til að blokka tæki. Þegar gagnagrunnsvélin biður um síðu sem er fjarverandi í biðminni, athugar stýrikerfiskjarninn sinn eigin skyndiminni áður en hann gefur út líkamlega I/O skipun til geymslustýringarinnar.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Þetta þriðja lag er að mestu ósýnilegt fyrir forritara en afar mikilvægt í kerfum þar sem biðminni gagnagrunnsins er undirútvegun. Skyndiminni stýrikerfissíðunnar er deilt á milli allra ferla, þannig að það keppir við forritaþjóninn þinn, vefþjóninn og annan hugbúnað sem keyrir á sama hýsli. Á sérstökum gagnagrunnsþjónum er þessi samkeppni í lágmarki og stýrikerfi skyndiminni veitir þýðingarmikið annað tækifæri biðminni. Á sameiginlegum vélum eða gámum með þröngum minnistakmörkunum er skyndiminni stýrikerfisins oft of lítið til að hjálpa.

Hvaða skyndiminnislag er ábyrgt fyrir mestum árangri í reynd?

Í raunverulegum framleiðslukerfum ræður biðminni afkastagetu með miklum mun. Hér er ástæðan fyrir því að hvert lag leggur mismunandi af mörkum í notkunartilvikum:

  • Niðurstöðuskyndiminni fyrirspurna: Mesti ávinningurinn af lesþungum, aðallega kyrrstæðum gagnasöfnum - skýrslufyrirspurnir, mælaborð í skyndiminni, endapunktar fyrir opinbert efni. Gagnslaus á skrifþungum borðum.
  • Gagnagrunnsbiðminni: Alhliða vinnuhesturinn. Sérhver framleiðslugagnagrunnsþjónn ætti að vera stilltur hér fyrst. Meðhöndlar bæði handahófskennt og raðaðgangsmynstur á skilvirkan hátt.
  • Síða skyndiminni stýrikerfisins: Veitir öryggisnet þegar biðminni er undirstærð. Hjálpar einnig verulega við raðskannanir á stórum töflum sem annars myndu reka heitar síður úr biðminni.
  • Geymslustýring skyndiminni (vélbúnaðarlag): Fjórða, oft gleymast lagið — NVMe SSD og RAID stýringar viðhalda innbyggðum skrifskyndiminni með rafhlöðu eða þétta öryggisafrit. Þetta verndar endingu án þess að fórna skrifafköstum á kostnað fsync leynd.
  • Forritalags skyndiminni (Redis, Memcached): Situr algjörlega fyrir ofan gagnagrunninn og vistar niðurstöður fyrirspurna í skyndiminni eða reiknuðum hlutum til að forðast að lenda í gagnagrunninum - tilvalið fyrir SaaS palla með mörgum leigjendum sem þjóna þúsundum samhliða notenda.

Hvernig geta nútíma viðskiptakerfi nýtt skyndiminni arkitektúr fyrir áreiðanleika í mælikvarða?

Fyrir fyrirtæki sem starfa á milli margra hagnýtra eininga - CRM, verkefnastjórnun, rafræn viðskipti, greiningar - ræður skyndiminni arkitektúr beint viðbragð vettvangsins eftir því sem teymum fjölgar. Pallar byggðir á vel lagskiptri skyndiminnistefnu geta þjónað tugum þúsunda samhliða notendum án hlutfallslegs innviðakostnaðar. Lykillinn er að hanna gagnaaðgangsmynstur sem virða mörk skyndiminni: halda heitum gögnum litlum og aðgangsmynstri fyrirsjáanlegum, nota aflestrar eftirlíkingar til að dreifa biðminni álagi og staðsetja skyndiminni forritalags eins og Redis fyrir framan gagnagrunninn fyrir endapunkta sem þjóna eins gögnum til margra notenda samtímis.

Mewayz er smíðaður með nákvæmlega þessa heimspeki í huga. Með 207 samþættum viðskiptaeiningum sem knýja meira en 138.000 notendur, er gagnalag vettvangsins hannað þannig að yfirgnæfandi meirihluti lestra sé framreiddur úr skyndiminni – með því að halda viðbragðstímum hröðum og innviðakostnaði fyrirsjáanlegum hvort sem þú ert að keyra á $19/mánuði byrjendaáætlun eða $49/mánuði faglega flokki.

Algengar spurningar

Bætir alltaf afköst gagnagrunnsins að slökkva á skyndiminni fyrirspurnarinnar?

Ekki alltaf, en fyrir mikið vinnuálag gerir það það venjulega. Fyrirspurnarskyndiminni krefst alþjóðlegs mutex til að viðhalda samræmi, sem verður flöskuháls við mikla samhliða. MySQL 8.0 fjarlægði skyndiminni fyrirspurnarinnar algjörlega af þessum sökum. PostgreSQL innleiddi aldrei innbyggt skyndiminni fyrir fyrirspurnir og treysti þess í stað á biðminni og skyndiminni forritalagsins. Ef lestur-til-skrifhlutfallið þitt er hátt og fyrirspurnir þínar eru mjög endurteknar, getur skyndiminni fyrirspurnar skilað raunverulegum ávinningi - annars skaltu fjárfesta þessa stillingu í biðminni.

Hvernig veit ég hvort biðminni er rétt stærð?

Fylgstu með högghlutfalli biðminni þinnar: hlutfall síðubeiðna sem berast frá hópnum á móti þeim sem krefjast lestrar disks. Slagshlutfall undir 95% á OLTP vinnuálagi er merki um að auka stærð laugarinnar. Í MySQL skaltu spyrjast fyrir um SHOW ENGINE INNODB STATUS og skoða högghlutfall biðminni. Í PostgreSQL sýnir pg_statio_user_tables yfirlitið hrúgukubba sem lesnar eru af diski á móti þjónum frá biðminni. Stefndu að því að halda öllu vinnusettinu þínu - ekki öllu gagnasafninu þínu - í vinnsluminni.

Hver er tengslin á milli skyndiminnilaga og SaaS áreiðanleika með mörgum leigjendum?

Í SaaS með mörgum leigjendum koma skyndiminnilög í veg fyrir „hávær nágrannavandamál“ þar sem mikið fyrirspurnaálag eins leigjanda rýrir frammistöðu allra annarra leigjenda. Leigjandi-meðvitaður skyndiminni forrita með TTL-undirstaða ógildingu heldur leigjanda heitum gögnum í Redis, sem dregur verulega úr biðminni þrýstingi frá stórum reikningum. Samtenging gagnagrunnsstigs ásamt heitum biðminni tryggir að sprengivirkni frá einum reikningi skolar ekki samnýttar síður úr skyndiminni og veldur töfum á töfum á pallinum.


Skyndiminnilög eru ekki smáatriði í gagnagrunni - þau eru byggingarlistinn sem aðskilur palla sem haldast hratt á mælikvarða frá þeim sem krefjast stöðugs slökkvistarfs í innviðum. Ef þú ert að byggja upp eða reka fyrirtæki sem þarfnast vettvangs sem þegar er fínstillt fyrir þessa veruleika, kannaðu Mewayz á app.mewayz.com — 207 einingar, einn samhangandi vettvang, byggður til að skila áreiðanlegum árangri frá fyrsta notanda þínum til hundrað þúsundasta.

.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Related Guide

HR Management Guide →

Manage your team effectively: employee profiles, leave management, payroll, and performance reviews.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime