Тры пласта кэша паміж Select і Disk
Тры пласта кэша паміж Select і Disk Гэта даследаванне паглыбляецца ў тры, вывучаючы яго значэнне і магчымы ўплыў. Разгледжаны асноўныя паняцці Гэты кантэнт даследуе: Фундаментальныя прынцыпы і тэорыі Практыка...
Mewayz Team
Editorial Team
Калі ваша праграма запускае аператар SELECT, гэты запыт амаль ніколі не закранае дыск ці нават неапрацаванае флэш-назапашвальнік — ён праходзіць праз тры розныя ўзроўні кэша, якія моўчкі вызначаюць, ці прыйдзе ваш адказ за мікрасекунды ці мілісекунды. Разуменне гэтых узроўняў - гэта розніца паміж бізнес-платформай, якая лёгка маштабуецца, і платформай, якая згінаецца пад рэальнай нагрузкай.
Што адбываецца ў момант, калі запыт SELECT пакідае ваша прыкладанне?
У момант, калі ваша праграма адпраўляе запыт SELECT, яна трапляе ў канвеер, які большасць распрацоўшчыкаў ніколі не правярае. Рухавік базы дадзеных перахоплівае запыт да таго, як адбываецца ўвод-вывад, разбіраючы SQL ва ўнутраны план выканання і неадкладна звяртаючыся да сваёй першай лініі абароны: кэша вынікаў запыту. Калі нядаўна быў выкананы ідэнтычны запыт з аднолькавымі параметрамі, механізм можа вярнуць кэшаваны набор вынікаў, не закранаючы ні адной старонкі дадзеных. Гэта часам называюць кэшам запытаў або кэшам вынікаў, і пры працоўных нагрузках з высокім узроўнем чытання і нізкім узроўнем запісу — такімі як панэлі аналітыкі і модулі справаздач — ён можа цалкам ліквідаваць пераважную большасць чытанняў дыска.
Важнае разуменне тут заключаецца ў тым, што кэш запытаў вельмі адчувальны да мутацыі даных. Любыя INSERT, UPDATE або DELETE супраць асноўнай табліцы робяць несапраўднымі адпаведныя кэшаваныя вынікі. Вось чаму транзакцыйныя сістэмы з вялікай колькасцю запісу часта цалкам адключаюць кэш запытаў і спадзяюцца замест гэтага на больш глыбокія ўзроўні.
Што такое буферны пул і чаму ён важны больш, чым вы думаеце?
Другі ўзровень кэша — і, магчыма, самы важны ў прадукцыйных сістэмах — гэта буферны пул (званы агульным буферам у PostgreSQL, буферным пулам InnoDB у MySQL). Гэта вобласць аператыўнай памяці, якую выкарыстоўвае механізм базы дадзеных для захоўвання апошніх старонак з дадзенымі. Калі запыт не можа быць абслужаны з кэша вынікаў, машына правярае, ці з'яўляюцца неабходныя старонкі даных ужо ў буферным пуле, перш чым выканаць любое чытанне дыска.
Буферны пул працуе па прынцыпе часовай і прасторавай лакальнасці: доступ да даных, да якіх быў зроблены апошні доступ, хутчэй за ўсё, будзе даступны зноў, а да даных, якія захоўваюцца побач з дадзенымі, да якіх ажыццяўляўся доступ, хутчэй за ўсё, доступ будзе даступны ў бліжэйшы час. Адміністратары баз даных наладжваюць памер пула буфераў як адно з рашэнняў канфігурацыі з самым высокім рычагом, якія яны прымаюць. Занадта малы буферны пул выклікае пастаяннае выдаленне старонак, што выклікае з'яву, званую трэшынгам, калі сістэма траціць больш часу на кіраванне промахамі кэша, чым на выкананне запытаў.
<цытата>Асноўная інфармацыя: у большасці працоўных нагрузак OLTP буферны пул добрага памеру азначае, што 95–99% усіх чытанняў даных абслугоўваюцца з аператыўнай памяці. Працоўны набор - падмноства вашых даных, да якога запыты часта датыкаюцца - часта значна меншы за агульны памер базы дадзеных. Вызначэнне памеру вашага буфернага пула ў адпаведнасці з вашым працоўным наборам, а не ўсім наборам даных, - гэта адзінае дзеянне наладкі з найбольшай аддачай, якое вы можаце зрабіць.
Як кэш аперацыйнай сістэмы запаўняе прабел паміж аператыўнай памяццю і дыскам?
Нават калі ўласны пул буфераў базы дадзеных адсутнічае, запыт яшчэ не прызначаны для сапраўднага чытання дыска. Аперацыйная сістэма падтрымлівае кэш старонак (таксама званы кэшам файлавай сістэмы), вобласць аператыўнай памяці, кіраванай ядром, якая буферызуе чытанне і запіс на блокавых прыладах. Калі механізм базы дадзеных запытвае старонку, якая адсутнічае ў пуле буфераў, ядро АС правярае ўласны кэш старонак, перш чым выдаць каманду фізічнага ўводу/вываду кантролеру сховішча.
💡 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 →Гэты трэці ўзровень практычна непрыкметны для распрацоўшчыкаў прыкладанняў, але вельмі важны ў сістэмах, дзе буферны пул базы дадзеных недастатковы. Кэш старонак АС агульны для ўсіх працэсаў, таму ён канкуруе з вашым серверам прыкладанняў, вэб-серверам і любым іншым праграмным забеспячэннем, якое працуе на тым жа хасце. На спецыяльных серверах баз дадзеных гэтая канкурэнцыя мінімальная, а кэш АС забяспечвае значны буфер другога шанцу. На агульных хостах або кантэйнерах з жорсткімі абмежаваннямі памяці кэш АС часта занадта малы, каб дапамагчы.
Які ўзровень кэша адказвае за большасць выйгрышаў прадукцыйнасці на практыцы?
У рэальных вытворчых сістэмах буферны пул значна дамінуе ў выніках прадукцыйнасці. Вось чаму кожны ўзровень уносіць свой уклад у розныя выпадкі выкарыстання:
- Кэш вынікаў запытаў: Найбольшая перавага для інтэнсіўных чытання, у асноўным статычных набораў даных — запыты справаздач, кэшаваныя панэлі кіравання, канчатковыя кропкі публічнага кантэнту. Бескарысна ў табліцах з вялікай колькасцю запісу.
- Буферны пул базы даных: універсальны працоўны конік. Тут спачатку трэба наладзіць кожны сервер базы дадзеных. Эфектыўна апрацоўвае як выпадковы, так і паслядоўны шаблон доступу.
- Кэш старонак АС: забяспечвае сетку бяспекі, калі буферны пул недастатковы. Таксама істотна дапамагае падчас паслядоўнага сканіравання вялікіх табліц, якія ў адваротным выпадку выдалілі б гарачыя старонкі з пула буфераў.
- Кэш кантролера сховішча (апаратны ўзровень): Чацвёрты, часта забыты ўзровень — цвёрдацельныя назапашвальнікі NVMe і RAID-кантролеры падтрымліваюць убудаваныя кэшы запісу з рэзервовай батарэяй або кандэнсатарам. Гэта абараняе трываласць без шкоды для прапускной здольнасці запісу за кошт затрымкі fsync.
- Кэш прыкладнога ўзроўню (Redis, Memcached): Цалкам знаходзіцца над базай дадзеных, кэшуючы серыялізаваныя вынікі запытаў або вылічаныя аб'екты, каб увогуле пазбегнуць траплення ў базу дадзеных — ідэальна падыходзіць для шматарэндацкіх платформаў SaaS, якія абслугоўваюць тысячы карыстальнікаў адначасова.
Як сучасныя бізнес-платформы могуць выкарыстоўваць архітэктуру кэша для надзейнасці ў маштабе?
Для прадпрыемстваў, якія працуюць з многімі функцыянальнымі модулямі — CRM, кіраванне праектамі, электронная камерцыя, аналітыка — архітэктура кэша непасрэдна вызначае хуткасць рэагавання платформы па меры росту каманд. Платформы, пабудаваныя на аснове шматслойнай стратэгіі кэшавання, могуць адначасова абслугоўваць дзясяткі тысяч карыстальнікаў без прапарцыйных выдаткаў на інфраструктуру. Галоўнае - гэта распрацоўка шаблонаў доступу да даных, якія паважаюць межы кэша: захоўванне гарачых даных у невялікім памеры і шаблоны доступу прадказальныя, выкарыстанне рэплік чытання для размеркавання нагрузкі буфернага пула і размяшчэнне кэша прыкладнога ўзроўню, напрыклад Redis, перад базай дадзеных для канчатковых кропак, якія абслугоўваюць ідэнтычныя даныя некалькім карыстальнікам адначасова.
Mewayz створаны менавіта з улікам гэтай філасофіі. З 207 інтэграванымі бізнес-модулямі, якія абслугоўваюць больш за 138 000 карыстальнікаў, узровень даных платформы распрацаваны такім чынам, што пераважная большасць чытанняў абслугоўваецца з кэша — забяспечваючы хуткі час водгуку і прадказальнасць выдаткаў на інфраструктуру, незалежна ад таго, выкарыстоўваеце вы стартавы план за 19 долараў у месяц або прафесійны ўзровень за 49 долараў у месяц.
Часта задаюць пытанні
Ці заўсёды адключэнне кэша запытаў паляпшае прадукцыйнасць базы дадзеных?
Не заўсёды, але пры вялікіх нагрузках запісу гэта звычайна так. Кэш запытаў патрабуе глабальнага м'ютэкса для падтрымання ўзгодненасці, што становіцца вузкім месцам пры высокім паралеле. Па гэтай прычыне MySQL 8.0 цалкам выдаліў кэш запытаў. PostgreSQL ніколі не выкарыстоўваў убудаваны кэш запытаў, абапіраючыся замест гэтага на буферны пул і кэшаванне ўзроўню прыкладання. Калі ваш каэфіцыент чытання і запісу высокі і вашы запыты часта паўтараюцца, кэш запытаў можа прынесці рэальную карысць - у адваротным выпадку ўкладзіце намаганні па наладзе ў буферны пул.
Як мне даведацца, ці правільны памер майго буфернага пула?
Сачыце за каэфіцыентам траплення ў пул буфераў: працэнт запытаў старонак, якія абслугоўваюцца з пула, у параўнанні з тымі, якія патрабуюць чытання дыска. Каэфіцыент траплення ніжэй за 95% пры працоўнай нагрузцы OLTP з'яўляецца сігналам да павелічэння памеру пула. У MySQL запытайце SHOW ENGINE INNODB STATUS і паглядзіце частату траплення ў пул буфераў. У PostgreSQL прагляд pg_statio_user_tables паказвае блокі кучы, счытваныя з дыска, у параўнанні з тымі, якія абслугоўваюцца з пула буфераў. Імкніцеся захоўваць увесь працоўны набор — а не поўны набор даных — у аператыўнай памяці.
Якая сувязь паміж узроўнямі кэша і надзейнасцю SaaS для некалькіх арэндаў?
У шматкарыстальніцкім SaaS ўзроўні кэша прадухіляюць праблемы "шумных суседзяў", калі вялікая нагрузка запытаў аднаго арандатара пагаршае прадукцыйнасць усіх астатніх арандатараў. Кэшаванне прыкладанняў з улікам арандатара з ануляцыяй на аснове TTL захоўвае гарачыя даныя кожнага арандатара ў Redis, значна зніжаючы ціск на буферны пул з боку вялікіх уліковых запісаў. Аб'яднанне злучэнняў на ўзроўні базы даных у спалучэнні з пулам цёплых буфераў гарантуе, што пакетная актыўнасць з любога асобнага ўліковага запісу не ачышчае агульныя старонкі з кэша і не выклікае скокі затрымкі на ўсёй платформе.
Узроўні кэша - гэта не дробязі базы дадзеных - гэта архітэктурная аснова, якая аддзяляе платформы, якія застаюцца хуткімі ў маштабе, ад платформаў, якія патрабуюць пастаяннага пажаратушэння інфраструктуры. Калі вы ствараеце або кіруеце бізнесам, якому патрэбна платформа, ужо аптымізаваная для гэтых рэалій, вывучыце Mewayz на app.mewayz.com — 207 модуляў, адна ўзгодненая платформа, створаная для надзейнай працы ад вашага першага карыстальніка да стотысячнага.
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.
Get more articles like this
Weekly business tips and product updates. Free forever.
You're subscribed!
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 →Related articles
Hacker News
XML Is a Cheap DSL
Mar 14, 2026
Hacker News
1M context is now generally available for Opus 4.6 and Sonnet 4.6
Mar 13, 2026
Hacker News
Tennessee grandmother jailed after AI face recognition error links her to fraud
Mar 13, 2026
Hacker News
Shall I implement it? No
Mar 12, 2026
Hacker News
Innocent woman jailed after being misidentified using AI facial recognition
Mar 12, 2026
Hacker News
An old photo of a large BBS
Mar 12, 2026
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