Три слоја кеша између Селецт и Диск
Ово истраживање улази у три, испитујући његов значај и потенцијални утицај.
Покривени основни концепти
Овај садржај истражује:
Основни принципи и теорије
Працтица...
<п>Када ваша апликација покрене наредбу <цоде>СЕЛЕЦТцоде>, тај упит скоро никада не додирује диск који се окреће или чак необрађену флеш меморију — он пролази кроз три различита слоја кеша који тихо одређују да ли ваш одговор стиже у микросекундама или милисекундама. Разумевање ових слојева је разлика између пословне платформе која се скалира без напора и оне која се савија под оптерећењем у стварном свету.п>
<х2>Шта се дешава у тренутку када СЕЛЕЦТ упит напусти вашу апликацију?х2>
<п>У тренутку када ваша апликација пошаље упит <цоде>СЕЛЕЦТцоде>, она улази у цевовод који већина програмера никада не прегледа. Механизам базе података пресреће захтев пре него што се деси било какав И/О, рашчлањујући СКЛ у интерни план извршења и одмах консултујући његову прву линију одбране: кеш резултата упита. Ако је идентичан упит са идентичним параметрима недавно извршен, машина може да врати кеширани скуп резултата без додиривања једне странице података. Ово се понекад назива <стронг>кеш кеш упитастронг> или кеш резултата, а на радним оптерећењима са великим бројем читања и малим бројем писања — као што су аналитичке контролне табле и модули за извештавање — може у потпуности да елиминише огромну већину читања дискова.п>
<п>Критични увид овде је да је кеш упита веома осетљив на мутације података. Било који <цоде>ИНСЕРТцоде>, <цоде>УПДАТЕцоде> или <цоде>ДЕЛЕТЕцоде> у односу на доњу табелу поништава релевантне кеширане резултате. Због тога трансакциони системи са тешким писањем често потпуно онемогућавају кеш упита и уместо тога се ослањају на дубље слојеве.п>
<х2>Шта је скуп бафера и зашто је важнији него што мислите?х2>
<п>Други слој кеша — и вероватно најважнији у производним системима — је <стронг>бафер баферастронг> (назван дељени бафер у ПостгреСКЛ-у, ИнноДБ бафер бафера у МиСКЛ-у). Ово је област РАМ меморије коју машина базе података користи за чување страница са подацима којима је недавно приступљено. Када упит не може да се испоручи из кеша резултата, машина проверава да ли се тражене странице података већ налазе у баферу пре него што изда било какво читање са диска.п>
<п>Бафер бафера функционише на принципу временске и просторне локације: подацима којима је недавно приступљено вероватно ће се поново приступити, а подацима ускладиштеним у близини података којима је приступљено вероватно ће се приступити ускоро. Администратори базе података подешавају величину бафера као једну од конфигурационих одлука са највећим утицајем које доносе. Сувише мали скуп бафера доводи до константног избацивања страница, стварајући феномен који се зове <ем>разбијањеем>, где систем троши више времена на управљање промашајима кеша него на извршавање упита.п>
<блоцккуоте>
<п><стронг>Кључни увид:стронг> У већини ОЛТП радних оптерећења, скуп бафера добре величине значи да се 95–99% свих читаних података служи из РАМ-а. Радни скуп — подскуп ваших података који упити заправо често додирују — често је далеко мањи од укупне величине базе података. Одређивање величине бафера тако да одговара вашем радном скупу, а не читавом скупу података, једина је радња подешавања са највећим повраћајем коју можете да предузмете.п>
блоцккуоте>
<х2>Како кеш оперативног система попуњава празнину између РАМ-а и диска?х2>
<п>Чак и када сопствено баферско спремиште базе података пропусти, упит још није предодређен за право читање диска. Оперативни систем одржава <стронг>кеш страницестронг> (који се назива и кеш система датотека), регион РАМ-а којим управља језгро и који баферује читање и писање на блокиране уређаје. Када механизам базе података захтева страницу која је одсутна из свог бафера, језгро ОС проверава сопствену кеш страницу пре него што изда физичку И/О команду контролеру складиштења.п>
<п>Овај трећи слој је углавном невидљив за програмере апликација, али је веома важан на системима где је бафер бафера недовољно обезбеђен. Кеш странице ОС-а се дели на свим процесима, тако да се такмичи са вашим сервером апликација, веб сервером и било којим другим софтвером који ради на истом хосту. На наменским серверима база података, ова конкуренција је минимална, а кеш ОС обезбеђује значајан бафер друге шансе. На дељеним хостовима или контејнерима са строгим ограничењима меморије, кеш ОС је често премали да би помогао.п>
<х2>Који слој кеш меморије је одговоран за највише победа у перформансама у пракси?х2>
<п>У производним системима у стварном свету, скуп бафера доминира у резултатима перформанси са великом разликом. Ево зашто сваки слој доприноси различито у различитим случајевима коришћења:п><ул>
<ли><стронг>Кеш резултата упита:стронг> Највећа корист од скупова података који се често читају, углавном статичких — упити за извештавање, кеширане контролне табле, крајње тачке јавног садржаја. Бескорисно на таблицама које су тешке за писање.ли>
<ли><стронг>Базен бафера базе података:стронг> Универзални радни коњ. Сваки производни сервер базе података треба прво да се подеси овде. Ефикасно рукује и случајним и узастопним обрасцима приступа.ли>
<ли><стронг>Кеш странице ОС:стронг> Пружа заштитну мрежу када је скуп бафера премали. Такође значајно помаже током секвенцијалног скенирања великих табела које би иначе избациле вруће странице из бафера.ли>
<ли><стронг>Кеш контролера за складиштење (хардверски слој):стронг> Четврти, често занемарен слој — НВМе ССД-ови и РАИД контролери одржавају уграђене кеш меморије за писање са резервном копијом батерије или кондензатора. Ово штити издржљивост без жртвовања протока писања на рачун фсинц латенције.ли>
<ли><стронг>Кеш слоја апликације (Редис, Мемцацхед):стронг> Налази се у потпуности изнад базе података, кеширајући резултате серијализованих упита или израчунате објекте како би се уопште избегло ударање у базу података — идеално за СааС платформе са више закупаца које опслужују хиљаде истовремених корисника.ли>
ул>
<х2>Како модерне пословне платформе могу да искористе архитектуру кеша за поузданост у великим размерама?х2>
<п>За предузећа која раде преко многих функционалних модула — ЦРМ, управљање пројектима, е-трговина, аналитика — архитектура кеша директно одређује одзив платформе како тимови расту. Платформе изграђене на добро слојевитој стратегији кеша могу да опслужују десетине хиљада истовремених корисника без пропорционалних трошкова инфраструктуре. Кључ је у дизајнирању образаца приступа подацима који поштују границе кеша: одржавање врућих података малим, а обрасци приступа предвидљивим, коришћење реплика читања за дистрибуцију оптерећења бафера и позиционирање кеша слоја апликације као што је Редис испред базе података за крајње тачке које служе идентичним подацима већем броју корисника истовремено.п>
<п>Меваиз је дизајниран управо са овом филозофијом на уму. Са 207 интегрисаних пословних модула који напајају преко 138.000 корисника, слој података платформе је дизајниран тако да се огромна већина читања сервира из кеш меморије — одржавајући време одговора брзим и инфраструктурне трошкове предвидљивим без обзира да ли користите почетни план од 19 УСД месечно или професионални ниво од 49 УСД месечно.п>
<х2>Честа питањах2>
<х3>Да ли онемогућавање кеш меморије упита увек побољшава перформансе базе података?х3>
<п>Не увек, али за радна оптерећења која захтевају пуно писања обично јесте. Кеш упита захтева глобални мутекс да би одржао конзистентност, што постаје уско грло под високом конкурентношћу. МиСКЛ 8.0 је у потпуности уклонио кеш упита из овог разлога. ПостгреСКЛ никада није имплементирао уграђену кеш меморију упита, ослањајући се уместо тога на бафер бафера и кеширање на слоју апликације. Ако је ваш однос читања и писања висок и ваши упити се веома понављају, кеш упита може донети стварну добит — у супротном, уложите тај напор за подешавање у бафер бафера.п>
<х3>Како да знам да ли је мој скуп бафера правилно величине?х3>
<п>Пратите однос погодака бафера: проценат захтева за странице које се испоручују из скупа у односу на оне који захтевају читање диска. Однос погодака испод 95% на ОЛТП радном оптерећењу је сигнал за повећање величине групе. У МиСКЛ-у поставите упит за <цоде>СХОВ ЕНГИНЕ ИННОДБ СТАТУСцоде> и погледајте стопу погодака бафера. У ПостгреСКЛ-у, приказ <цоде>пг_статио_усер_таблесцоде> излаже блокове гомиле који се читају са диска у односу на сервиране из бафера. Настојте да цео ваш радни скуп — а не цео скуп података — задржите у РАМ-у.п>
<х3>Какав је однос између слојева кеша и поузданости СааС-а са више закупаца?х3>
<п>У СааС-у са више закупаца, слојеви кеша спречавају проблеме са „бучним суседима“ где велико оптерећење упита једног закупца смањује перформансе свих других закупаца. Кеширање апликација са свешћу корисника са поништавањем заснованим на ТТЛ-у чува вруће податке по закупцу у Редис-у, драстично смањујући притисак бафера са великих налога. Обједињавање веза на нивоу базе података у комбинацији са топлим бафером обезбеђује да бурст активност са било ког појединачног налога не испразни дељене странице из кеша и не изазове скокове кашњења широм платформе.п><хр>
<п>Слојеви кеша нису тривијалност базе података – они су архитектонска основа која одваја платформе које остају брзе у обиму од оних које захтевају константно гашење инфраструктуре. Ако градите или водите предузеће коме је потребна платформа која је већ оптимизована за ове реалности, <стронг><а хреф="хттпс://апп.меваиз.цом">истражите Меваиз на апп.меваиз.цома>стронг> — 207 модула, једну кохерентну платформу, направљену да поуздано ради од вашег првог корисника до вашег стохиљадитим.п>
<сцрипт типе="апплицатион/лд+јсон">{"@цонтект":"хттпс:\/\/сцхема.орг","@типе":"ФАКПаге","маинЕнтити":[{"@типе":"Куестион","наме":"Да ли онемогућавање кеш меморије упита увек побољшава перформансе базе података?","аццептедАнсверТипе"",":"Увек али за велика оптерећења, то обично захтева кеширање упита за одржавање конзистентности, што постаје уско грло под високим степеном конкурентности у потпуности из овог разлога однос је висок и ваш"}},{"@типе":"Куестион","наме":"Како да знам да ли је мој скуп бафера правилно величине?","аццептедАнсвер":{"@типе":"Ансвер","тект":"Пратите однос броја погодака у групи бафера: проценат захтева за странице који се испоручују из скупа за читање у односу на оне који захтевају радни ОЛ-ови % за читање је сигнал за повећање величине скупа у МиСКЛ-у, упитајте СХОВ ЕНГИНЕ ИННОДБ СТАТУС У ПостгреСКЛ-у, приказ пг_статио_усер_таблес излаже блокове читања са диска у односу на сервиране из бафера А"}},{"@хат"-ца"слој. Поузданост СааС-а?","аццептедАнсвер":{"@типе":"Ансвер","тект":"У СааС-у са више закупаца, слојеви кеша спречавају проблеме \"бучног суседа\" где велико оптерећење упита једног закупца смањује перформансе за све остале закупце које кешују апликације са ТТЛ-ом који спречава да се кеширање података базира на ТТЛ-у неважеће. велики налози на нивоу базе података у комбинацији са топлим бафером обезбеђују да се рафал активира"}}]}сцрипт>.
Try Mewayz Free
All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.