Tres capes de memòria cau entre la selecció i el disc
Tres capes de memòria cau entre la selecció i el disc Aquesta exploració aprofundeix en tres, examinant-ne la importància i l'impacte potencial. Conceptes bàsics coberts Aquest contingut explora: Principis i teories fonamentals Pràctica...
Mewayz Team
Editorial Team
Quan la vostra aplicació activa una instrucció SELECT, aquesta consulta gairebé mai no toca un disc giratori ni tan sols un emmagatzematge flash en brut; passa per tres capes de memòria cau diferents que determinen silenciosament si la vostra resposta arriba en microsegons o mil·lisegons. Entendre aquestes capes és la diferència entre una plataforma empresarial que s'escala sense esforç i una que s'ajusta sota la càrrega del món real.
Què passa en el moment en què una consulta SELECT abandona la vostra aplicació?
En el moment en què la vostra aplicació envia una consulta SELECT, entra en una canalització que la majoria de desenvolupadors mai inspeccionen. El motor de la base de dades intercepta la sol·licitud abans que es produeixi cap E/S, analitza l'SQL en un pla d'execució intern i consulta immediatament la seva primera línia de defensa: la memòria cau de resultats de la consulta. Si recentment s'ha executat una consulta idèntica amb paràmetres idèntics, el motor pot retornar un conjunt de resultats a la memòria cau sense tocar una sola pàgina de dades. De vegades s'anomena memòria cau de consultes o memòria cau de resultats, i en càrregues de treball d'alta lectura i poca escriptura, com ara taulers d'anàlisi i mòduls d'informes, pot eliminar completament la gran majoria de lectures de disc.
La visió crítica aquí és que la memòria cau de consultes és molt sensible a les mutacions de dades. Qualsevol INSERT, ACTUALITZAR o SUPRIMIR de la taula subjacent invalida els resultats rellevants de la memòria cau. És per això que els sistemes transaccionals amb molta escriptura sovint desactiven completament la memòria cau de consultes i es basen en les capes més profundes.
Què és l'agrupament de buffer i per què importa més del que penses?
La segona capa de memòria cau, i possiblement la més important dels sistemes de producció, és la agrupació de memòria intermèdia (anomenada memòria intermèdia compartida a PostgreSQL, la agrupació de memòria intermèdia InnoDB a MySQL). Aquesta és una regió de RAM que el motor de base de dades utilitza per contenir les pàgines de dades a les quals s'ha accedit recentment. Quan no es pot atendre una consulta des de la memòria cau de resultats, el motor comprova si les pàgines de dades necessàries ja són residents a l'agrupació de memòria intermèdia abans d'emetre qualsevol lectura de disc.
El conjunt de memòria intermèdia funciona segons el principi de la localitat temporal i espacial: és probable que es torni a accedir a les dades a les quals s'ha accedit recentment, i és probable que s'accedirà aviat a les dades emmagatzemades a prop de les dades a les quals s'ha accedit. Els administradors de bases de dades ajusten la mida de l'agrupació de memòria intermèdia com una de les decisions de configuració de més apalancament que prenen. Un grup de memòria intermèdia massa petit provoca un desallotjament constant de la pàgina, produint un fenomen anomenat thrashing, on el sistema passa més temps gestionant les faltes de memòria cau que executant consultes.
Informació clau: a la majoria de càrregues de treball OLTP, un grup de memòria intermèdia ben mida significa que el 95-99% de totes les lectures de dades es distribueixen des de la memòria RAM. El conjunt de treball (el subconjunt de les vostres dades que les consultes toquen sovint) sovint és molt més petit que la mida total de la base de dades. La mida del vostre grup de memòria intermèdia perquè s'adapti al vostre conjunt de treball, no a tot el vostre conjunt de dades, és l'acció d'ajustament amb més rendiment que podeu fer.
Com omple la memòria cau del sistema operatiu el buit entre la memòria RAM i el disc?
Fins i tot quan es perdi l'agrupació de memòria intermèdia de la base de dades, una consulta encara no està destinada a una lectura real del disc. El sistema operatiu manté una caché de pàgines (també anomenada memòria cau del sistema de fitxers), una regió de memòria RAM gestionada pel nucli que emmagatzema les lectures i les escriptures per bloquejar els dispositius. Quan el motor de base de dades sol·licita una pàgina que està absent del seu grup de memòria intermèdia, el nucli del sistema operatiu comprova la seva pròpia memòria cau de la pàgina abans d'emetre una ordre d'E/S física al controlador d'emmagatzematge.
💡 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 →Aquesta tercera capa és en gran part invisible per als desenvolupadors d'aplicacions, però és molt important en sistemes on l'agrupació de memòria intermèdia de la base de dades està insuficient. La memòria cau de la pàgina del sistema operatiu es comparteix entre tots els processos, de manera que competeix amb el vostre servidor d'aplicacions, servidor web i qualsevol altre programari que s'executi al mateix host. Als servidors de bases de dades dedicats, aquesta competència és mínima i la memòria cau del sistema operatiu proporciona un buffer significatiu de segona oportunitat. En amfitrions o contenidors compartits amb límits de memòria reduïts, la memòria cau del sistema operatiu sovint és massa petita per ajudar-lo.
Quina capa de memòria cau és responsable de la majoria de guanys de rendiment a la pràctica?
En els sistemes de producció del món real, l'agrupament de memòria intermèdia domina els resultats de rendiment per un ampli marge. Aquest és el motiu pel qual cada capa contribueix de manera diferent segons els casos d'ús:
- Memòria cau de resultats de la consulta: el màxim avantatge en conjunts de dades de lectura pesada, principalment estàtiques: consultes d'informes, taulers de comandament a la memòria cau, punts finals de contingut públic. Inútil en taules pesades per escriure.
- Agrupació de memòria intermèdia de bases de dades: el cavall de batalla universal. Cada servidor de bases de dades de producció s'ha de sintonitzar aquí primer. Gestiona els patrons d'accés aleatori i seqüencial de manera eficient.
- Memòria cau de la pàgina del sistema operatiu: proporciona una xarxa de seguretat quan l'agrupació de memòria intermèdia té una mida inferior. També ajuda de manera significativa durant les exploracions seqüencials de taules grans que, d'una altra manera, desallotjarien les pàgines actives del grup de memòria intermèdia.
- Memòria cau del controlador d'emmagatzematge (capa de maquinari): una quarta capa, que sovint es passa per alt: els SSD NVMe i els controladors RAID mantenen memòria cau d'escriptura a bord amb còpia de seguretat de la bateria o del condensador. Això protegeix la durabilitat sense sacrificar el rendiment d'escriptura a costa de la latència fsync.
- Memòria cau de la capa d'aplicació (Redis, Memcached): es troba a sobre de la base de dades completament, emmagatzemant a la memòria cau els resultats de les consultes serialitzades o els objectes calculats per evitar que arribin a la base de dades, ideal per a plataformes SaaS de múltiples arrendataris que donen servei a milers d'usuaris simultàniament.
Com poden les plataformes empresarials modernes aprofitar l'arquitectura de memòria cau per a la fiabilitat a escala?
Per a les empreses que operen en molts mòduls funcionals (CRM, gestió de projectes, comerç electrònic, anàlisi), l'arquitectura de memòria cau determina directament la capacitat de resposta de la plataforma a mesura que els equips creixen. Les plataformes basades en una estratègia de memòria cau ben estructurada poden servir desenes de milers d'usuaris concurrents sense un cost d'infraestructura proporcional. La clau és dissenyar patrons d'accés a les dades que respectin els límits de la memòria cau: mantenir les dades actuals petites i els patrons d'accés previsibles, utilitzar rèpliques de lectura per distribuir la càrrega de l'agrupació de memòria intermèdia i col·locar una memòria cau de capa d'aplicació com Redis davant de la base de dades per als punts finals que serveixen dades idèntiques a diversos usuaris simultàniament.
Mewayz s'ha dissenyat precisament amb aquesta filosofia en ment. Amb 207 mòduls empresarials integrats que alimenten més de 138.000 usuaris, la capa de dades de la plataforma està dissenyada perquè la majoria aclaparadora de les lectures es serveixin des de la memòria cau, mantenint els temps de resposta ràpids i els costos d'infraestructura previsibles tant si utilitzeu el pla d'inici de 19 dòlars al mes com el nivell professional de 49 dòlars al mes.
Preguntes més freqüents
Desactivar la memòria cau de consultes sempre millora el rendiment de la base de dades?
No sempre, però normalment ho fa per a càrregues de treball amb molta escriptura. La memòria cau de consultes requereix un mutex global per mantenir la coherència, que es converteix en un coll d'ampolla amb una concurrència elevada. MySQL 8.0 va eliminar completament la memòria cau de consultes per aquest motiu. PostgreSQL mai va implementar una memòria cau de consultes integrada, basant-se en canvi en l'agrupació de memòria intermèdia i la memòria cau de la capa d'aplicació. Si la vostra ràtio de lectura a escriptura és alta i les vostres consultes són molt repetitives, una memòria cau de consultes pot generar guanys reals; en cas contrari, invertiu aquest esforç d'ajustament a la memòria intermèdia.
Com sé si el meu grup de memòria intermèdia té la mida correcta?
Controleu la ràtio d'èxits del vostre grup de memòria intermèdia: el percentatge de sol·licituds de pàgines ateses des del grup en comparació amb les que requereixen una lectura de disc. Una ràtio d'èxits per sota del 95% en una càrrega de treball OLTP és un senyal per augmentar la mida del grup. A MySQL, consulteu MOSTRA L'ESTAT DEL MOTOR INNODB i mireu la taxa d'èxits del grup de memòria intermèdia. A PostgreSQL, la vista pg_statio_user_tables exposa els blocs d'emmagatzematge dinàmic llegits des del disc en comparació amb els servits des de l'agrupació de memòria intermèdia. Intenta mantenir tot el teu conjunt de treball (no el conjunt de dades complet) resident a la RAM.
Quina relació hi ha entre les capes de memòria cau i la fiabilitat de SaaS multi-inquilí?
En el SaaS multi-inquilí, les capes de memòria cau eviten problemes de "veïns sorollosos" on la càrrega de consultes pesada d'un inquilí degrada el rendiment de tots els altres inquilins. L'emmagatzematge a la memòria cau d'aplicacions conscient de l'inquilí amb invalidació basada en TTL manté les dades calentes per inquilí a Redis, reduint dràsticament la pressió del grup de memòria intermèdia dels comptes grans. L'agrupació de connexions a nivell de base de dades combinada amb una agrupació de memòria intermèdia calenta garanteix que l'activitat de ràfega de qualsevol compte únic no esborri les pàgines compartides de la memòria cau i provoqui pics de latència a tota la plataforma.
Les capes de memòria cau no són curiositats de bases de dades: són la base arquitectònica que separa les plataformes que es mantenen ràpides a escala de les que requereixen una extinció constant d'incendis d'infraestructura. Si esteu creant o dirigint una empresa que necessita una plataforma ja optimitzada per a aquestes realitats, exploreu Mewayz a app.mewayz.com: 207 mòduls, una plataforma coherent, dissenyada per funcionar de manera fiable des del vostre primer usuari fins al centenari.
We use cookies to improve your experience and analyze site traffic. Cookie Policy