Hacker News

Drie cachelagen tussen Select en Disk

Drie cachelagen tussen Select en Disk Deze verkenning gaat dieper in op drie aspecten en onderzoekt de betekenis en potentiële impact ervan. — Mewayz Business-besturingssysteem.

4 min gelezen

Mewayz Team

Editorial Team

Hacker News

Wanneer uw applicatie een SELECT-instructie afvuurt, raakt die query vrijwel nooit een draaiende schijf of zelfs maar onbewerkte flash-opslag; deze passeert drie verschillende cachelagen die in stilte bepalen of uw antwoord binnen microseconden of milliseconden arriveert. Het begrijpen van deze lagen is het verschil tussen een bedrijfsplatform dat moeiteloos schaalt en een platform dat bezwijkt onder de werkelijke belasting.

Wat gebeurt er op het moment dat een SELECT-query uw applicatie verlaat?

Op het moment dat uw applicatie een SELECT-query verzendt, komt deze in een pijplijn terecht die de meeste ontwikkelaars nooit inspecteren. De database-engine onderschept het verzoek voordat er enige I/O plaatsvindt, parseert de SQL in een intern uitvoeringsplan en raadpleegt onmiddellijk de eerste verdedigingslinie: de queryresultaatcache. Als onlangs een identieke zoekopdracht met identieke parameters is uitgevoerd, kan de engine een in de cache opgeslagen resultatenset retourneren zonder ook maar één pagina met gegevens aan te raken. Dit wordt ook wel de querycache of resultaatcache genoemd, en bij workloads die veel lezen en weinig schrijven, zoals analysedashboards en rapportagemodules, kan dit de overgrote meerderheid van schijflezingen volledig elimineren.

Het cruciale inzicht hier is dat de querycache zeer gevoelig is voor gegevensmutaties. Elke INSERT, UPDATE of DELETE tegen de onderliggende tabel maakt de relevante in de cache opgeslagen resultaten ongeldig. Dit is de reden waarom transactiesystemen die veel schrijven vereisen, de querycache vaak volledig uitschakelen en in plaats daarvan vertrouwen op de diepere lagen.

Wat is de bufferpool en waarom is deze belangrijker dan u denkt?

De tweede cachelaag – en misschien wel de belangrijkste in productiesystemen – is de bufferpool (in PostgreSQL de gedeelde buffer genoemd, in MySQL de InnoDB-bufferpool). Dit is een RAM-gebied dat door de database-engine wordt gebruikt om recentelijk geopende gegevenspagina's op te slaan. Wanneer een zoekopdracht niet vanuit de resultatencache kan worden uitgevoerd, controleert de engine of de vereiste gegevenspagina's zich al in de bufferpool bevinden voordat er schijflezingen worden uitgevoerd.

De bufferpool werkt volgens het principe van temporele en ruimtelijke lokaliteit: gegevens waartoe recentelijk toegang is verkregen, zullen waarschijnlijk opnieuw worden benaderd, en gegevens die zijn opgeslagen in de buurt van waartoe toegang is verkregen, zullen waarschijnlijk binnenkort ook worden benaderd. Databasebeheerders stemmen de grootte van de bufferpool af als een van de meest invloedrijke configuratiebeslissingen die ze nemen. Een te kleine bufferpool zorgt ervoor dat pagina's voortdurend worden verwijderd, waardoor een fenomeen ontstaat dat thrashing wordt genoemd, waarbij het systeem meer tijd besteedt aan het beheren van cachemissers dan aan het uitvoeren van zoekopdrachten.

💡 WIST JE DAT?

Mewayz vervangt 8+ zakelijke tools in één platform

CRM · Facturatie · HR · Projecten · Boekingen · eCommerce · POS · Analytics. Voor altijd gratis abonnement beschikbaar.

Begin gratis →

Belangrijk inzicht: Bij de meeste OLTP-workloads betekent een grote bufferpool dat 95-99% van alle gegevenslezingen vanuit RAM worden uitgevoerd. De werkset – de subset van uw gegevens die vaak door zoekopdrachten wordt gebruikt – is vaak veel kleiner dan de totale databaseomvang. Het afstemmen van uw bufferpool op uw werkset, en niet op uw gehele dataset, is de enige afstemmingsactie met het hoogste rendement die u kunt ondernemen.

Hoe vult de cache van het besturingssysteem de kloof tussen RAM en schijf?

Zelfs als de eigen bufferpool van de database ontbreekt, is een query nog niet bestemd voor een echte schijflezing. Het besturingssysteem houdt een paginacache bij (ook wel de bestandssysteemcache genoemd), een gebied van door de kernel beheerd RAM-geheugen dat lees- en schrijfbewerkingen buffert om apparaten te blokkeren. Wanneer de database-engine een pagina opvraagt ​​die afwezig is in de bufferpool, controleert de besturingssysteemkernel zijn eigen paginacache voordat hij een fysieke I/O-opdracht aan de opslagcontroller geeft.

Deze derde laag is grotendeels onzichtbaar voor applicatieontwikkelaars, maar van groot belang op systemen waarop de databasebufferpool onvoldoende is ingericht. De cache van de besturingssysteempagina wordt door alle processen gedeeld en concurreert dus met uw applicatieserver, webserver en andere software die op dezelfde host draait. Op speciale databaseservers is deze concurrentie minimaal en biedt de cache van het besturingssysteem een ​​zinvolle tweedekansbuffer. Op gedeelde hosts of containers met krappe geheugenlimieten is de cache van het besturingssysteem vaak te klein om te helpen.

Welke cachelaag is in de praktijk verantwoordelijk voor de meeste prestatiewinsten?

In echte productiesystemen domineert de bufferpool

Streamline Your Business with Mewayz

Mewayz brings 207 business modules into one platform — CRM, invoicing, project management, and more. Join 138,000+ users who simplified their workflow.

Start Free Today →

Probeer Mewayz Gratis

Alles-in-één platform voor CRM, facturatie, projecten, HR & meer. Geen creditcard nodig.

Gerelateerde Gids

HR-beheergids →

Beheer je team effectief: medewerkersprofielen, verlofbeheer, salarisadministratie en prestatiebeoordelingen.

Begin vandaag nog slimmer met het beheren van je bedrijf.

Sluit je aan bij 30,000+ bedrijven. Voor altijd gratis abonnement · Geen creditcard nodig.

Klaar om dit in de praktijk te brengen?

Sluit je aan bij 30,000+ bedrijven die Mewayz gebruiken. Voor altijd gratis abonnement — geen creditcard nodig.

Start Gratis Proefperiode →

Klaar om actie te ondernemen?

Start vandaag je gratis Mewayz proefperiode

Alles-in-één bedrijfsplatform. Geen creditcard vereist.

Begin gratis →

14 dagen gratis proefperiode · Geen creditcard · Altijd opzegbaar