Hacker News

సెలెక్ట్ మరియు డిస్క్ మధ్య మూడు కాష్ లేయర్‌లు

సెలెక్ట్ మరియు డిస్క్ మధ్య మూడు కాష్ లేయర్‌లు ఈ అన్వేషణ దాని ప్రాముఖ్యత మరియు సంభావ్య ప్రభావాన్ని పరిశీలిస్తూ మూడుగా పరిశోధిస్తుంది. కోర్ కాన్సెప్ట్‌లు కవర్ చేయబడ్డాయి ఈ కంటెంట్ అన్వేషిస్తుంది: ప్రాథమిక సూత్రాలు మరియు సిద్ధాంతాలు ఆచరణ...

1 min read Via frn.sh

Mewayz Team

Editorial Team

Hacker News

మీ అప్లికేషన్ SELECT స్టేట్‌మెంట్‌ను కాల్చినప్పుడు, ఆ ప్రశ్న దాదాపుగా స్పిన్నింగ్ డిస్క్‌ను లేదా ముడి ఫ్లాష్ నిల్వను తాకదు - ఇది మీ ప్రతిస్పందన మైక్రోసెకన్‌లు లేదా మిల్లీసెకన్‌లలో వస్తుందో లేదో నిశ్శబ్దంగా నిర్ధారించే మూడు విభిన్న కాష్ లేయర్‌ల గుండా వెళుతుంది. ఈ లేయర్‌లను అర్థం చేసుకోవడం అనేది అప్రయత్నంగా స్కేల్ చేసే వ్యాపార ప్లాట్‌ఫారమ్ మరియు వాస్తవ-ప్రపంచ భారాన్ని తగ్గించే ప్లాట్‌ఫారమ్ మధ్య వ్యత్యాసం.

ఒక ఎంపిక ప్రశ్న మీ అప్లికేషన్ నుండి నిష్క్రమించిన క్షణం ఏమి జరుగుతుంది?

మీ అప్లికేషన్ SELECT ప్రశ్నను పంపిన క్షణంలో, చాలా మంది డెవలపర్‌లు ఎప్పుడూ తనిఖీ చేయని పైప్‌లైన్‌లోకి ప్రవేశిస్తుంది. ఏదైనా I/O సంభవించే ముందు డేటాబేస్ ఇంజిన్ అభ్యర్థనను అడ్డుకుంటుంది, SQLని అంతర్గత అమలు ప్రణాళికగా అన్వయిస్తుంది మరియు వెంటనే దాని మొదటి రక్షణ శ్రేణిని సంప్రదిస్తుంది: ప్రశ్న ఫలితం కాష్. ఒకే విధమైన పారామితులతో ఒకేలాంటి ప్రశ్న ఇటీవల అమలు చేయబడితే, ఇంజిన్ ఒక్క పేజీ డేటాను తాకకుండానే కాష్ చేసిన ఫలితాన్ని సెట్ చేస్తుంది. దీనిని కొన్నిసార్లు ప్రశ్న కాష్ లేదా రిజల్ట్ కాష్ అని పిలుస్తారు మరియు అధిక-రీడ్, తక్కువ-వ్రైట్ వర్క్‌లోడ్‌లపై — అనలిటిక్స్ డ్యాష్‌బోర్డ్‌లు మరియు రిపోర్టింగ్ మాడ్యూల్‌లు వంటివి — ఇది చాలా డిస్క్ రీడ్‌లను పూర్తిగా తొలగించగలదు.

ఇక్కడ క్లిష్టమైన అంతర్దృష్టి ఏమిటంటే, ప్రశ్న కాష్ డేటా మ్యుటేషన్‌లకు అత్యంత సున్నితంగా ఉంటుంది. అంతర్లీన పట్టికకు వ్యతిరేకంగా ఏదైనా ఇన్సర్ట్, అప్‌డేట్ లేదా తొలగించు సంబంధిత కాష్ చేసిన ఫలితాలను చెల్లదు. అందుకే వ్రాత-భారీ లావాదేవీ వ్యవస్థలు తరచుగా ప్రశ్న కాష్‌ను పూర్తిగా నిలిపివేస్తాయి మరియు బదులుగా లోతైన లేయర్‌లపై ఆధారపడతాయి.

బఫర్ పూల్ అంటే ఏమిటి మరియు మీరు అనుకున్నదానికంటే ఇది ఎందుకు ముఖ్యమైనది?

రెండవ కాష్ లేయర్ — మరియు ఉత్పత్తి వ్యవస్థలలో నిస్సందేహంగా అత్యంత ముఖ్యమైనది — బఫర్ పూల్ (PostgreSQLలో షేర్డ్ బఫర్ అంటారు, MySQLలో InnoDB బఫర్ పూల్). ఇది ఇటీవల యాక్సెస్ చేసిన డేటా పేజీలను పట్టుకోవడానికి డేటాబేస్ ఇంజిన్ ఉపయోగించే RAM యొక్క ప్రాంతం. ఫలిత కాష్ నుండి ప్రశ్నను అందించలేనప్పుడు, ఏదైనా డిస్క్ రీడ్‌ను జారీ చేయడానికి ముందు అవసరమైన డేటా పేజీలు ఇప్పటికే బఫర్ పూల్‌లో ఉన్నాయో లేదో ఇంజిన్ తనిఖీ చేస్తుంది.

బఫర్ పూల్ తాత్కాలిక మరియు ప్రాదేశిక స్థానికత సూత్రంపై పనిచేస్తుంది: ఇటీవల యాక్సెస్ చేసిన డేటా మళ్లీ యాక్సెస్ చేయబడే అవకాశం ఉంది మరియు యాక్సెస్ చేసిన డేటాకు సమీపంలో నిల్వ చేయబడిన డేటా త్వరలో యాక్సెస్ చేయబడే అవకాశం ఉంది. డేటాబేస్ అడ్మినిస్ట్రేటర్‌లు బఫర్ పూల్ పరిమాణాన్ని వారు తీసుకునే అత్యధిక పరపతి కాన్ఫిగరేషన్ నిర్ణయాలలో ఒకటిగా ట్యూన్ చేస్తారు. చాలా చిన్నదిగా ఉండే బఫర్ పూల్ స్థిరమైన పేజీ తొలగింపుకు కారణమవుతుంది, థ్రాషింగ్ అని పిలువబడే ఒక దృగ్విషయాన్ని ఉత్పత్తి చేస్తుంది, ఇక్కడ సిస్టమ్ ప్రశ్నలను అమలు చేయడం కంటే కాష్ మిస్‌లను నిర్వహించడంలో ఎక్కువ సమయాన్ని వెచ్చిస్తుంది.

కీలక అంతర్దృష్టి: చాలా OLTP పనిభారంలో, బాగా-పరిమాణ బఫర్ పూల్ అంటే మొత్తం డేటా రీడ్‌లలో 95–99% RAM నుండి అందించబడుతుంది. వర్కింగ్ సెట్ — ప్రశ్నలను తరచుగా తాకే మీ డేటా యొక్క ఉపసమితి — తరచుగా మొత్తం డేటాబేస్ పరిమాణం కంటే చాలా తక్కువగా ఉంటుంది. మీ మొత్తం డేటాసెట్ కాకుండా, మీ పని సెట్‌కు సరిపోయేలా మీ బఫర్ పూల్ పరిమాణాన్ని మార్చడం మీరు తీసుకోగల అత్యధిక-రాబడి ట్యూనింగ్ చర్య.

ఆపరేటింగ్ సిస్టమ్ కాష్ RAM మరియు డిస్క్ మధ్య ఖాళీని ఎలా పూరిస్తుంది?

డేటాబేస్ యొక్క స్వంత బఫర్ పూల్ తప్పిపోయినప్పటికీ, నిజమైన డిస్క్ రీడ్ కోసం ప్రశ్న ఇంకా నిర్దేశించబడలేదు. ఆపరేటింగ్ సిస్టమ్ పేజీ కాష్ని నిర్వహిస్తుంది (దీనిని ఫైల్ సిస్టమ్ కాష్ అని కూడా పిలుస్తారు), ఇది కెర్నల్-నిర్వహించే RAM యొక్క ప్రాంతం, ఇది పరికరాలను బ్లాక్ చేయడానికి రీడ్ మరియు రైట్‌లను బఫర్ చేస్తుంది. డేటాబేస్ ఇంజిన్ దాని బఫర్ పూల్ నుండి లేని పేజీని అభ్యర్థించినప్పుడు, OS కెర్నల్ స్టోరేజ్ కంట్రోలర్‌కు భౌతిక I/O కమాండ్‌ను జారీ చేసే ముందు దాని స్వంత పేజీ కాష్‌ని తనిఖీ చేస్తుంది.

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

ఈ మూడవ లేయర్ అప్లికేషన్ డెవలపర్‌లకు చాలా వరకు కనిపించదు కానీ డేటాబేస్ బఫర్ పూల్ తక్కువగా ఉన్న సిస్టమ్‌లలో చాలా ముఖ్యమైనది. OS పేజీ కాష్ అన్ని ప్రాసెస్‌లలో భాగస్వామ్యం చేయబడుతుంది, కనుక ఇది మీ అప్లికేషన్ సర్వర్, వెబ్ సర్వర్ మరియు అదే హోస్ట్‌లో నడుస్తున్న ఏదైనా ఇతర సాఫ్ట్‌వేర్‌తో పోటీపడుతుంది. అంకితమైన డేటాబేస్ సర్వర్‌లలో, ఈ పోటీ తక్కువగా ఉంటుంది మరియు OS కాష్ అర్ధవంతమైన రెండవ-అవకాశ బఫర్‌ను అందిస్తుంది. భాగస్వామ్య హోస్ట్‌లు లేదా గట్టి మెమరీ పరిమితులు ఉన్న కంటైనర్‌లలో, OS కాష్ సహాయం చేయడానికి చాలా చిన్నదిగా ఉంటుంది.

ప్రాక్టీస్‌లో అత్యధిక పనితీరు విజయాలకు ఏ కాష్ లేయర్ బాధ్యత వహిస్తుంది?

వాస్తవ-ప్రపంచ ఉత్పత్తి వ్యవస్థలలో, బఫర్ పూల్ పనితీరు ఫలితాలపై విస్తృత మార్జిన్‌తో ఆధిపత్యం చెలాయిస్తుంది. ప్రతి లేయర్ వినియోగ సందర్భాలలో విభిన్నంగా ఎందుకు దోహదపడుతుందో ఇక్కడ ఉంది:

  • ప్రశ్న ఫలితం కాష్: రీడ్-హెవీ, ఎక్కువగా స్టాటిక్ డేటాసెట్‌లపై అత్యధిక ప్రయోజనం — రిపోర్టింగ్ క్వెరీలు, కాష్డ్ డాష్‌బోర్డ్‌లు, పబ్లిక్ కంటెంట్ ఎండ్ పాయింట్‌లు. వ్రాత-భారీ పట్టికలలో పనికిరానిది.
  • డేటాబేస్ బఫర్ పూల్: యూనివర్సల్ వర్క్‌హోర్స్. ప్రతి ఉత్పత్తి డేటాబేస్ సర్వర్ ముందుగా ఇక్కడ ట్యూన్ చేయబడాలి. యాదృచ్ఛిక మరియు సీక్వెన్షియల్ యాక్సెస్ నమూనాలను సమర్ధవంతంగా నిర్వహిస్తుంది.
  • OS పేజీ కాష్: బఫర్ పూల్ తక్కువ పరిమాణంలో ఉన్నప్పుడు భద్రతా వలయాన్ని అందిస్తుంది. బఫర్ పూల్ నుండి హాట్ పేజీలను తొలగించే పెద్ద టేబుల్‌ల సీక్వెన్షియల్ స్కాన్‌ల సమయంలో కూడా గణనీయంగా సహాయపడుతుంది.
  • స్టోరేజ్ కంట్రోలర్ కాష్ (హార్డ్‌వేర్ లేయర్): నాల్గవ, తరచుగా పట్టించుకోని లేయర్ — NVMe SSDలు మరియు RAID కంట్రోలర్‌లు బ్యాటరీ లేదా కెపాసిటర్ బ్యాకప్‌తో ఆన్‌బోర్డ్ రైట్ కాష్‌లను నిర్వహిస్తాయి. ఇది fsync జాప్యం యొక్క వ్యయంతో వ్రాత నిర్గమాంశను త్యాగం చేయకుండా మన్నికను రక్షిస్తుంది.
  • అప్లికేషన్-లేయర్ కాష్ (Redis, Memcached): డేటాబేస్ పూర్తిగా పైన కూర్చుని, సీరియలైజ్డ్ క్వెరీ ఫలితాలు లేదా కంప్యూటెడ్ ఆబ్జెక్ట్‌లను కాష్ చేయడం ద్వారా డేటాబేస్‌ను అస్సలు కొట్టకుండా చేస్తుంది — వేలాది మంది ఏకకాల వినియోగదారులకు సేవలందిస్తున్న బహుళ-అద్దెదారు SaaS ప్లాట్‌ఫారమ్‌లకు అనువైనది.

స్కేల్ వద్ద విశ్వసనీయత కోసం ఆధునిక వ్యాపార ప్లాట్‌ఫారమ్‌లు కాష్ ఆర్కిటెక్చర్‌ను ఎలా ప్రభావితం చేయగలవు?

చాలా ఫంక్షనల్ మాడ్యూల్స్‌లో పనిచేసే వ్యాపారాల కోసం - CRM, ప్రాజెక్ట్ మేనేజ్‌మెంట్, ఇ-కామర్స్, అనలిటిక్స్ - కాష్ ఆర్కిటెక్చర్ టీమ్‌లు పెరిగే కొద్దీ ప్లాట్‌ఫారమ్ ప్రతిస్పందనను నేరుగా నిర్ణయిస్తుంది. మంచి-లేయర్డ్ కాష్ స్ట్రాటజీపై నిర్మించిన ప్లాట్‌ఫారమ్‌లు దామాషా అవస్థాపన ఖర్చు లేకుండా పదివేల మంది ఉమ్మడి వినియోగదారులకు సేవ చేయగలవు. కీలకం కాష్ సరిహద్దులను గౌరవించే డేటా యాక్సెస్ నమూనాలను రూపొందించడం: హాట్ డేటాను చిన్నగా ఉంచడం మరియు యాక్సెస్ నమూనాలను ఊహించదగినదిగా ఉంచడం, బఫర్ పూల్ లోడ్‌ను పంపిణీ చేయడానికి రీడ్ రెప్లికాస్‌ని ఉపయోగించడం మరియు బహుళ వినియోగదారులకు ఏకకాలంలో ఒకే డేటాను అందించే ఎండ్ పాయింట్‌ల కోసం డేటాబేస్ ముందు Redis వంటి అప్లికేషన్-లేయర్ కాష్‌ను ఉంచడం.

మెవేజ్ సరిగ్గా ఈ తత్వశాస్త్రాన్ని దృష్టిలో ఉంచుకుని రూపొందించబడింది. 207 ఇంటిగ్రేటెడ్ బిజినెస్ మాడ్యూల్స్‌తో 138,000 మంది వినియోగదారులకు శక్తిని అందించడంతో, ప్లాట్‌ఫారమ్ డేటా లేయర్ రూపొందించబడింది, తద్వారా అధిక సంఖ్యలో రీడ్‌లు కాష్ నుండి అందించబడతాయి - ప్రతిస్పందన సమయాలను వేగవంతంగా ఉంచడం మరియు మీరు నెలకు $19 స్టార్టర్ ప్లాన్ లేదా $49/నెల ప్రొఫెషనల్ టైర్‌లో నడుస్తున్నా, మౌలిక సదుపాయాల ఖర్చులను ఊహించవచ్చు.

తరచుగా అడిగే ప్రశ్నలు

ప్రశ్న కాష్‌ని నిలిపివేయడం వలన డేటాబేస్ పనితీరు ఎల్లప్పుడూ మెరుగుపడుతుందా?

ఎల్లప్పుడూ కాదు, కానీ రాయడం-భారీ పనిభారం కోసం ఇది సాధారణంగా చేస్తుంది. క్వెరీ కాష్‌కు అనుగుణ్యతను కొనసాగించడానికి గ్లోబల్ మ్యూటెక్స్ అవసరం, ఇది అధిక సమ్మతితో అడ్డంకిగా మారుతుంది. MySQL 8.0 ఈ కారణంగా ప్రశ్న కాష్‌ను పూర్తిగా తొలగించింది. PostgreSQL ఎప్పుడూ అంతర్నిర్మిత ప్రశ్న కాష్‌ని అమలు చేయలేదు, బదులుగా బఫర్ పూల్ మరియు అప్లికేషన్-లేయర్ కాషింగ్‌పై ఆధారపడుతుంది. మీ రీడ్-టు-రైట్ నిష్పత్తి ఎక్కువగా ఉంటే మరియు మీ ప్రశ్నలు చాలా పునరావృతమైతే, క్వెరీ కాష్ నిజమైన లాభాలను అందిస్తుంది - లేకపోతే, ఆ ట్యూనింగ్ ప్రయత్నాన్ని బఫర్ పూల్‌లో పెట్టుబడి పెట్టండి.

నా బఫర్ పూల్ పరిమాణం సరిగ్గా ఉందో లేదో నాకు ఎలా తెలుస్తుంది?

మీ బఫర్ పూల్ హిట్ నిష్పత్తిని పర్యవేక్షించండి: పూల్ నుండి అందించబడిన పేజీ అభ్యర్థనల శాతం మరియు డిస్క్ రీడ్ అవసరం. OLTP పనిభారంపై 95% కంటే తక్కువ హిట్ నిష్పత్తి పూల్ పరిమాణాన్ని పెంచడానికి సంకేతం. MySQLలో, Show ENGINE INNODB STATUSని ప్రశ్నించండి మరియు బఫర్ పూల్ హిట్ రేటును చూడండి. PostgreSQLలో, pg_statio_user_tables వీక్షణ డిస్క్ నుండి చదివిన హీప్ బ్లాక్‌లను బఫర్ పూల్ నుండి అందించిన వాటిని బహిర్గతం చేస్తుంది. మీ పూర్తి వర్కింగ్ సెట్‌ను — మీ పూర్తి డేటాసెట్ కాదు — RAMలో నివాసం ఉండేలా చూసుకోండి.

కాష్ లేయర్‌లు మరియు బహుళ-అద్దెదారు SaaS విశ్వసనీయత మధ్య సంబంధం ఏమిటి?

బహుళ-అద్దెదారు SaaSలో, కాష్ లేయర్‌లు "ధ్వనించే పొరుగు" సమస్యలను నివారిస్తాయి, ఇక్కడ ఒక అద్దెదారు యొక్క భారీ ప్రశ్న లోడ్ ఇతర అద్దెదారులందరి పనితీరును తగ్గిస్తుంది. TTL-ఆధారిత చెల్లుబాటుతో అద్దెదారు-అవగాహన అప్లికేషన్ కాషింగ్ Redisలో ప్రతి-అద్దెదారు హాట్ డేటాను ఉంచుతుంది, పెద్ద ఖాతాల నుండి బఫర్ పూల్ ఒత్తిడిని భారీగా తగ్గిస్తుంది. వెచ్చని బఫర్ పూల్‌తో కలిపి డేటాబేస్-స్థాయి కనెక్షన్ పూలింగ్ ఏ ఒక్క ఖాతా నుండి అయినా బరస్ట్ యాక్టివిటీ కాష్ నుండి షేర్డ్ పేజీలను ఫ్లష్ చేయదని మరియు ప్లాట్‌ఫారమ్ అంతటా లేటెన్సీ స్పైక్‌లకు కారణమవుతుందని నిర్ధారిస్తుంది.


కాష్ లేయర్‌లు డేటాబేస్ ట్రివియా కాదు - అవి స్థిరమైన ఇన్‌ఫ్రాస్ట్రక్చర్ ఫైర్‌ఫైటింగ్ అవసరమయ్యే వాటి నుండి స్కేల్‌లో వేగంగా ఉండే ప్లాట్‌ఫారమ్‌లను వేరు చేసే నిర్మాణ పునాది. మీరు ఈ వాస్తవాల కోసం ఇప్పటికే ఆప్టిమైజ్ చేయబడిన ప్లాట్‌ఫారమ్ అవసరమయ్యే వ్యాపారాన్ని నిర్మిస్తుంటే లేదా నడుపుతున్నట్లయితే, app.mewayz.comలో Mewayzని అన్వేషించండి — 207 మాడ్యూల్స్, మీ మొదటి వినియోగదారు నుండి మీ వంద-వేల వంతు వరకు విశ్వసనీయంగా నిర్వహించడానికి రూపొందించబడిన ఒక పొందికైన ప్లాట్‌ఫారమ్.