Hacker News

Trè strati di cache trà a selezzione è u discu

Trè strati di cache trà a selezzione è u discu Questa esplorazione sfonda in trè, esaminendu u so significatu è u so impattu potenziale. Cuncepzioni Core Coperti Stu cuntenutu esplora: Principii è teorii fundamentali Pratica...

10 min read Via frn.sh

Mewayz Team

Editorial Team

Hacker News

Quandu a vostra applicazione spara una dichjarazione SELECT, quella dumanda ùn tocca quasi mai un discu rotante o ancu un almacenamentu flash crudu - passa per trè strati di cache distinti chì determinanu in silenziu se a vostra risposta arriva in microsecondi o millisecondi. Capisce sti strati hè a diffarenza trà una piattaforma di cummerciale chì scala senza sforzu è una chì si fibbia sottu a carica di u mondu reale.

Chì succede u mumentu chì una dumanda SELECT lascia a vostra applicazione?

U mumentu chì a vostra applicazione manda una dumanda SELECT, entra in una pipeline chì a maiò parte di i sviluppatori ùn inspecciona mai. U mutore di basa di dati intercepta a dumanda prima di ogni I / O si verifica, analizendu u SQL in un pianu di esecutivu internu è cunsultendu immediatamente a so prima linea di difesa: a cache di risultati di a dumanda. Se una dumanda identica cù paràmetri idèntici hè stata eseguita recentemente, u mutore pò rinvià un set di risultati in cache senza toccu una sola pagina di dati. Questu hè qualchì volta chjamatu cache di queryo cache di risultati, è nantu à carichi di travagliu di alta lettura è bassa scrittura - cum'è dashboards analitici è moduli di rapportu - pò eliminà a maiò parte di a lettura di u discu sanu.

L'intuizione critica quì hè chì a cache di query hè assai sensibile à e mutazioni di dati. Qualchese INSERT, UPDATE, o DELETE contr'à a tabella sottostante invalida i risultati in cache pertinenti. Hè per quessa chì i sistemi transazionali di scrittura pesante spessu disattivanu a cache di query interamente è si basanu invece nantu à i strati più profondi.

Chì hè u Buffer Pool è perchè hè più impurtante di ciò chì pensate?

A seconda capa di cache - è forse u più impurtante in i sistemi di produzzione - hè u buffer pool (chjamatu buffer spartutu in PostgreSQL, u buffer pool InnoDB in MySQL). Questa hè una regione di RAM chì u mutore di basa di dati usa per mantene e pagine di dati accede recentemente. Quandu una dumanda ùn pò micca esse servuta da a cache di u risultatu, u mutore verifica se e pagine di dati necessarie sò digià residenti in u buffer pool prima di emette alcuna lettura di discu.

U buffer pool opera nantu à u principiu di a località temporale è spaziale: i dati à l'accessu di pocu tempu sò prubabilmente accede à novu, è i dati cullucati vicinu à i dati accessu hè prubabilmente accede prestu. L'amministratori di basa di dati sintonizzanu a dimensione di u pool di buffer cum'è una di e decisioni di cunfigurazione di più altu leva chì facenu. Un pool di buffer chì hè troppu chjucu provoca l'evacuazione constante di a pagina, chì produce un fenomenu chjamatu thrashing, induve u sistema passa più tempu à gestisce i miss cache chè à eseguisce dumande.

Insight Key: In a maiò parte di i carichi di travagliu OLTP, un buffer pool ben dimensionatu significa chì 95-99% di tutte e letture di dati sò servuti da RAM. U settore di travagliu - u sottumessu di i vostri dati chì e dumande in realtà toccanu spessu - hè spessu assai più chjucu cà a dimensione tutale di a basa di dati. Dimensionà u vostru pool di buffer per adattà à u vostru set di travagliu, micca tuttu u vostru inseme di dati, hè l'unica azione di sintonizazione cù u più altu ritornu chì pudete fà.

Cumu a cache di u sistema operatore riempie a distanza trà a RAM è u discu?

Ancu quandu u buffer pool di a basa di dati manca, una dumanda ùn hè ancu destinata à una vera lettura di discu. U sistema operatore mantene una cache di pagina(chiamata ancu cache di filesystem), una regione di RAM gestita da u kernel chì buffers leghje è scrive per bluccà i dispositi. Quandu u mutore di basa di dati dumanda una pagina chì hè assente da u so buffer pool, u kernel di u SO verifica a so propria pagina di cache prima di emette un cumandamentu I/O fisicu à u controller di almacenamiento.

💡 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 →

Questu terzu stratu hè largamente invisibile per i sviluppatori di l'applicazioni, ma assai impurtante nantu à i sistemi induve u pool di buffer di basa di dati hè sottumessu. U cache di a pagina di u SO hè spartutu in tutti i prucessi, cusì cumpete cù u vostru servitore di l'applicazioni, u servitore web, è qualsiasi altru software in u stessu òspite. In i servitori di basa di dati dedicati, sta cumpetizione hè minima, è a cache di u SO furnisce un buffer significativu di seconda chance. In ospiti o cuntenituri spartuti cù limiti di memoria stretti, a cache di u SO hè spessu troppu chjuca per aiutà.

Quale Layer di Cache hè Rispunsevuli di a più Vittoria di Prestazione in Pratica?

In i sistemi di produzzione di u mondu reale, u buffer pool domina i risultati di rendiment per un largu margine. Eccu perchè ogni strata cuntribuisce in modu diversu in i casi d'usu:

  • Cache di i risultati di a dumanda: U più altu benefiziu nantu à set di dati pesanti in lettura, soprattuttu statici - dumande di rapportu, dashboards in cache, punti finali di cuntenutu publicu. Inutili nantu à i tavulini di scrittura.
  • Base di buffer di basa di dati: U cavallu di travagliu universale. Ogni servitore di basa di dati di produzzione deve esse sintonizatu quì prima. Gestisce i mudelli d'accessu aleatoriu è sequenziale in modu efficace.
  • Cache di pagina di u SO: Fornisce una reta di salvezza quandu u buffer pool hè sottodimensionatu. Aiuta ancu significativamente durante i scans sequenziali di grandi tavule chì altrimenti sguillà e pagine calde da u buffer pool.
  • Cache di u controller di almacenamentu (stratu di hardware): Un quartu stratu, spessu trascuratu - i SSD NVMe è i controller RAID mantenenu cache di scrittura à bordu cù una copia di salvezza di batteria o condensatore. Questu prutege a durabilità senza sacrificà u throughput di scrittura à a spesa di a latenza fsync.
  • Cache di u livellu di l'applicazione (Redis, Memcached): Si trova sopra a basa di dati interamente, cachendu in cache risultati di quistione seriali o oggetti computati per evità di chjappà in a basa di dati - ideale per e plataforme SaaS multi-tenant chì servenu migliaia d'utilizatori simultanei.

Cumu ponu e piattaforme di cummerciale muderne sfruttà l'architettura di cache per l'affidabilità à scala?

Per l'imprese chì operanu in parechji moduli funzionali - CRM, gestione di prughjetti, e-commerce, analisi - l'architettura di cache determina direttamente a risposta di a piattaforma mentre e squadre crescenu. Piattaforme custruite nantu à una strategia di cache ben stratificata ponu serve decine di millaie di utilizatori simultanei senza costu proporzionale di l'infrastruttura. A chjave hè di cuncepisce mudelli d'accessu à i dati chì rispettanu i limiti di a cache: mantene e dati caldi chjuchi è mudelli d'accessu prevedibili, utilizendu repliche di lettura per distribuisce a carica di u pool di buffer, è posizionanu una cache di l'applicazione cum'è Redis davanti à a basa di dati per i punti finali chì servenu dati identici à parechji utilizatori simultaneamente.

Mewayz hè architettu cù esattamente sta filusufìa in mente. Cù 207 moduli di cummerciale integrati chì alimentanu più di 138 000 utenti, a strata di dati di a piattaforma hè pensata in modu chì a maiò parte di e letture sò servite da a cache - mantenendu tempi di risposta veloci è i costi di l'infrastruttura prevedibili sia in u pianu di partenza di $ 19 / mese o di u livellu prufessiunale di $ 49 / mese.

Domande Frequenti

A disattivazione di a cache di e dumande migliora sempre u rendiment di a basa di dati?

Micca sempre, ma per i carichi di travagliu pesanti in scrittura hè tipica. A cache di query richiede un mutex globale per mantene a coerenza, chì diventa un collu di bottiglia in alta concurrenza. MySQL 8.0 hà eliminatu a cache di query interamente per questu mutivu. PostgreSQL ùn hà mai implementatu una cache di query integrata, affittendu invece di u pool di buffer è di u caching di l'applicazione. Se u vostru rapportu di lettura à scrittura hè altu è e vostre dumande sò assai ripetitive, una cache di query pò furnisce guadagni reali - altrimenti, investite stu sforzu di sintonizazione in u buffer pool.

Cumu possu sapè se u mo buffer pool hè dimensionatu bè?

Monitorizà u vostru rapportu di successu di u buffer pool: u percentuale di e dumande di pagina servite da u pool versus quelli chì necessitanu una lettura di discu. Un rapportu di successu sottu à 95% nantu à una carica di travagliu OLTP hè un signalu per aumentà a dimensione di a piscina. In MySQL, dumandate SHOW ENGINE INNODB STATUS è fighjate à a rata di successu di u buffer pool. In PostgreSQL, a vista pg_statio_user_tables espone i blocchi di heap letti da u discu versus servutu da u buffer pool. Scopu di mantene tuttu u vostru set di travagliu - micca u vostru set di dati sanu - residente in RAM.

Quale hè a relazione trà i strati di cache è l'affidabilità SaaS multi-tenant ?

In SaaS multi-tenant, i strati di cache impediscenu i prublemi di "vicini rumorosi" induve a pesante carica di dumanda di un inquilino degrada u rendiment per tutti l'altri inquilini. A cache di l'applicazioni di l'inquilini cun l'invalidazione basata in TTL mantene e dati caldi per inquilini in Redis, riducendu drasticamente a pressione di u buffer pool da i grandi conti. A cumminazione di cunnessione à u nivellu di basa di dati cumminata cù un pool di buffer caldu assicura chì l'attività di burst da ogni cuntu unicu ùn sguassate micca e pagine spartute da a cache è causanu picchi di latenza in tutta a piattaforma.


I strati di cache ùn sò micca trivia di basa di dati - sò a fundazione architettonica chì separa e plataforme chì si fermanu veloci à scala da quelli chì necessitanu una lotta di l'infrastruttura constante. Sè vo site custruendu o gestite un affari chì hà bisognu di una piattaforma digià ottimizzata per queste realità, splora Mewayz at app.mewayz.com — 207 moduli, una piattaforma coerente, custruita per eseguisce in modu affidabile da u vostru primu utilizatore à u vostru centumila.