Hacker News

Trije sloji predpomnilnika med Select in Disk

Trije sloji predpomnilnika med Select in Disk This exploration delves into three, examining its significance and potential impact. Zajeti temeljni koncepti Ta vsebina raziskuje: Temeljna načela in teorije Praktika...

8 min read Via frn.sh

Mewayz Team

Editorial Team

Hacker News

Ko vaša aplikacija sproži stavek SELECT, se ta poizvedba skoraj nikoli ne dotakne vrtečega se diska ali celo neobdelanega bliskovnega pomnilnika – gre skozi tri različne plasti predpomnilnika, ki tiho določijo, ali vaš odgovor prispe v mikrosekundah ali milisekundah. Razumevanje teh plasti je razlika med poslovno platformo, ki se prilagaja brez napora, in tisto, ki se upogiba pod obremenitvijo iz resničnega sveta.

What Happens the Moment a SELECT Query Leaves Your Application?

The moment your application sends a SELECT query, it enters a pipeline most developers never inspect. Mehanizem baze podatkov prestreže zahtevo, preden pride do kakršnega koli V/I, razčleni SQL v notranji načrt izvajanja in takoj preveri prvo obrambno linijo: predpomnilnik rezultatov poizvedbe. Če je bila nedavno izvedena enaka poizvedba z enakimi parametri, lahko mehanizem vrne predpomnjen nabor rezultatov, ne da bi se dotaknil ene same strani podatkov. To se včasih imenuje predpomnilnik poizvedb ali predpomnilnik rezultatov in pri delovnih obremenitvah z velikim številom branja in nizkim zapisovanjem – kot so analitične nadzorne plošče in moduli za poročanje – lahko v celoti odpravi veliko večino branja diska.

The critical insight here is that the query cache is highly sensitive to data mutations. Any INSERT, UPDATE, or DELETE against the underlying table invalidates relevant cached results. This is why write-heavy transactional systems often disable the query cache entirely and rely on the deeper layers instead.

What Is the Buffer Pool and Why Does It Matter More Than You Think?

Druga predpomnilniška plast – in nedvomno najpomembnejša v produkcijskih sistemih – je medpomnilnik (imenovan skupni medpomnilnik v PostgreSQL, vmesni pomnilnik InnoDB v MySQL). This is a region of RAM the database engine uses to hold recently accessed data pages. Ko poizvedbe ni mogoče vročiti iz predpomnilnika rezultatov, motor preveri, ali so zahtevane podatkovne strani že v medpomnilniškem področju, preden izda branje diska.

Vmesni pomnilnik deluje po načelu časovne in prostorske lokalnosti: podatki, do katerih ste nedavno dostopali, bodo verjetno znova dostopani, podatki, shranjeni v bližini dostopanih podatkov, pa bodo verjetno dostopni kmalu. Database administrators tune buffer pool size as one of the highest-leverage configuration decisions they make. Premajhen vmesni pomnilnik povzroča nenehno izločanje strani, kar povzroča pojav, imenovan razbijanje, kjer sistem porabi več časa za upravljanje zgrešenih predpomnilnikov kot za izvajanje poizvedb.

Key Insight: In most OLTP workloads, a well-sized buffer pool means 95–99% of all data reads are served from RAM. The working set — the subset of your data that queries actually touch frequently — is often far smaller than the total database size. Sizing your buffer pool to fit your working set, not your entire dataset, is the single highest-return tuning action you can take.

How Does the Operating System Cache Fill the Gap Between RAM and Disk?

Even when the database's own buffer pool misses, a query is not yet destined for a true disk read. The operating system maintains a page cache (also called the filesystem cache), a region of kernel-managed RAM that buffers reads and writes to block devices. Ko mehanizem zbirke podatkov zahteva stran, ki je ni v njegovem medpomnilniškem področju, jedro OS preveri lastni predpomnilnik strani, preden izda fizični V/I ukaz krmilniku pomnilnika.

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

Ta tretja plast je večinoma nevidna za razvijalce aplikacij, vendar je izjemno pomembna v sistemih, kjer je vmesni pomnilnik baze podatkov premalo oskrbovan. Predpomnilnik strani OS si delijo vsi procesi, zato tekmuje z vašim aplikacijskim strežnikom, spletnim strežnikom in katero koli drugo programsko opremo, ki se izvaja na istem gostitelju. On dedicated database servers, this competition is minimal, and the OS cache provides a meaningful second-chance buffer. On shared hosts or containers with tight memory limits, the OS cache is frequently too small to help.

Which Cache Layer Is Responsible for the Most Performance Wins in Practice?

In real-world production systems, the buffer pool dominates performance outcomes by a wide margin. Here is why each layer contributes differently across use cases:

  • Predpomnilnik rezultatov poizvedbe: Največja prednost pri obremenjenih, večinoma statičnih naborih podatkov – poizvedbe za poročanje, predpomnjene nadzorne plošče, končne točke javne vsebine. Neuporaben v tabelah, kjer je veliko pisanja.
  • Database buffer pool: The universal workhorse. Every production database server should be tuned here first. Handles both random and sequential access patterns efficiently.
  • OS page cache: Provides a safety net when the buffer pool is undersized. Also helps significantly during sequential scans of large tables that would otherwise evict hot pages from the buffer pool.
  • Predpomnilnik krmilnika shranjevanja (plast strojne opreme): Četrta, pogosto spregledana plast – diski NVMe SSD in krmilniki RAID vzdržujejo vgrajene predpomnilnike za pisanje z rezervno baterijo ali kondenzatorjem. This protects durability without sacrificing write throughput at the expense of fsync latency.
  • Predpomnilnik aplikacijskega sloja (Redis, Memcached): Popolnoma je nad zbirko podatkov in shranjuje v predpomnilnik serializirane rezultate poizvedb ali izračunane objekte, da sploh ne pride v zbirko podatkov – idealno za platforme SaaS z več najemniki, ki služijo na tisoče sočasnih uporabnikov.

How Can Modern Business Platforms Leverage Cache Architecture for Reliability at Scale?

Za podjetja, ki delujejo v številnih funkcionalnih modulih – CRM, vodenje projektov, e-trgovina, analitika – arhitektura predpomnilnika neposredno določa odzivnost platforme, ko ekipe rastejo. Platforms built on a well-layered cache strategy can serve tens of thousands of concurrent users without proportional infrastructure cost. Ključno je načrtovanje vzorcev dostopa do podatkov, ki spoštujejo meje predpomnilnika: ohranjanje majhnih vročih podatkov in predvidljivost vzorcev dostopa, uporaba replik za branje za porazdelitev obremenitve področja medpomnilnika in postavitev predpomnilnika aplikacijskega sloja, kot je Redis, pred bazo podatkov za končne točke, ki strežejo enake podatke več uporabnikom hkrati.

Mewayz is architected with exactly this philosophy in mind. Z 207 integriranimi poslovnimi moduli, ki napajajo več kot 138.000 uporabnikov, je podatkovna plast platforme zasnovana tako, da se velika večina branj izvaja iz predpomnilnika – odzivni časi so hitri, stroški infrastrukture pa predvidljivi, ne glede na to, ali uporabljate začetni načrt za 19 USD/mesec ali profesionalni nivo za 49 USD/mesec.

Pogosto zastavljena vprašanja

Does disabling the query cache always improve database performance?

Not always, but for write-heavy workloads it typically does. The query cache requires a global mutex to maintain consistency, which becomes a bottleneck under high concurrency. MySQL 8.0 removed the query cache entirely for this reason. PostgreSQL never implemented a built-in query cache, relying instead on the buffer pool and application-layer caching. Če je vaše razmerje med branjem in pisanjem visoko in se vaše poizvedbe zelo ponavljajo, lahko predpomnilnik poizvedb prinese resnične dobičke – v nasprotnem primeru vložite ta trud pri prilagajanju v področje vmesnega pomnilnika.

How do I know if my buffer pool is sized correctly?

Monitor your buffer pool hit ratio: the percentage of page requests served from the pool versus those requiring a disk read. A hit ratio below 95% on an OLTP workload is a signal to increase pool size. In MySQL, query SHOW ENGINE INNODB STATUS and look at the buffer pool hit rate. In PostgreSQL, the pg_statio_user_tables view exposes heap blocks read from disk versus served from the buffer pool. Aim to keep your entire working set — not your full dataset — resident in RAM.

What is the relationship between cache layers and multi-tenant SaaS reliability?

V SaaS z več najemniki sloji predpomnilnika preprečujejo težave s "hrupnimi sosedi", kjer velika obremenitev poizvedb enega najemnika poslabša zmogljivost vseh drugih najemnikov. Predpomnjenje aplikacij, ki se zaveda najemnikov, z razveljavljanjem na podlagi TTL hrani vroče podatke za vsakega najemnika v Redisu, kar drastično zmanjša pritisk na medpomnilniško skupino velikih računov. Združevanje povezav na ravni baze podatkov v kombinaciji s toplim vmesnim pomnilnikom zagotavlja, da izbruhna dejavnost iz katerega koli posameznega računa ne izprazni strani v skupni rabi iz predpomnilnika in ne povzroči skokov zakasnitve po platformi.


Plasti predpomnilnika niso trivialnost baze podatkov – so arhitekturni temelj, ki ločuje platforme, ki ostajajo hitre v obsegu, od tistih, ki zahtevajo nenehno gašenje infrastrukture. Če gradite ali vodite podjetje, ki potrebuje platformo, ki je že optimizirana za te razmere, raziščite Mewayz na app.mewayz.com – 207 modulov, ena skladna platforma, izdelana za zanesljivo delovanje od vašega prvega uporabnika do vašega stotisočega.

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