Hacker News

Сонголт ба дискний хоорондох гурван кэш давхарга

Сонголт ба дискний хоорондох гурван кэш давхарга Энэхүү хайгуул нь түүний ач холбогдол, боломжит нөлөөллийг судалж, гурван хэсэгт хуваагдана. Хамгаалагдсан үндсэн ойлголтууд Энэхүү агуулга нь: Үндсэн зарчим ба онолууд Практик...

1 min read Via frn.sh

Mewayz Team

Editorial Team

Hacker News

Таны аппликейшн SELECT хэллэгийг ажиллуулах үед энэ асуулга нь эргэлдэж буй диск эсвэл түүхий флаш санах ойд бараг хэзээ ч хүрдэггүй - энэ нь таны хариулт микросекунд эсвэл миллисекундэд хүрэх эсэхийг чимээгүйхэн тодорхойлдог кэшийн гурван давхаргыг дамжуулдаг. Эдгээр давхаргыг ойлгох нь ямар ч хүчин чармайлтгүйгээр өргөждөг бизнесийн платформ болон бодит ачааллын дор тэврэлт хийдэг платформ хоёрын ялгаа юм.

СОНГОХ асуулга таны аппликешныг орхих мөчид юу болох вэ?

Таны аппликейшн SELECT асуулга илгээх агшинд ихэнх хөгжүүлэгчид хэзээ ч шалгадаггүй. Өгөгдлийн сангийн хөдөлгүүр нь аливаа оролт гаралт гарахаас өмнө хүсэлтийг таслан зогсоож, SQL-г дотоод гүйцэтгэлийн төлөвлөгөөнд задлан шинжилж, хамгаалалтын эхний мөр болох асуулгын үр дүнгийн кэштэй шууд зөвлөлддөг. Хэрэв ижил параметртэй ижил асуулга саяхан хийгдсэн бол хөдөлгүүр нь мэдээллийн нэг хуудсанд хүрэлгүйгээр кэшлэгдсэн үр дүнг буцааж өгөх боломжтой. Үүнийг заримдаа асуулганы кэшэсвэл үр дүнгийн кэш гэж нэрлэдэг бөгөөд аналитик хяналтын самбар, тайлагнах модулиуд гэх мэт уншилт ихтэй, бичих бага ачаалалтай үед энэ нь дискний уншилтын дийлэнх хувийг бүрмөсөн устгаж чадна.

Энд байгаа чухал ойлголт бол асуулгын кэш нь өгөгдлийн мутацид маш мэдрэмтгий байдаг. Доод хүснэгтийн эсрэг дурын INSERT, UPDATE эсвэл DELETE нь кэшэд хадгалагдсан холбогдох үр дүнг хүчингүй болгодог. Тийм ч учраас бичихэд хүнд гүйлгээний системүүд асуулгын кэшийг бүхэлд нь идэвхгүй болгож, оронд нь илүү гүн давхаргад тулгуурладаг.

Буферийн сан гэж юу вэ, яагаад таны бодсоноос илүү чухал вэ?

Хоёр дахь кэш давхарга нь үйлдвэрлэлийн системд хамгийн чухал нь байж магадгүй нь буферийн сан (PostgreSQL-д хуваалцсан буфер, MySQL-ийн InnoDB буферийн сан гэж нэрлэдэг). Энэ нь өгөгдлийн сангийн хөдөлгүүр нь саяхан хандсан өгөгдлийн хуудсыг хадгалахад ашигладаг RAM-ийн бүс юм. Үр дүнгийн кэшээс асуулга явуулах боломжгүй үед хөдөлгүүр нь диск уншихаас өмнө шаардлагатай өгөгдлийн хуудсууд буферийн санд байгаа эсэхийг шалгадаг.

Буфер сан нь цаг хугацааны болон орон зайн байршлын зарчмаар ажилладаг: саяхан хандсан өгөгдөлд дахин хандах боломжтой бөгөөд хандсан өгөгдлийн ойролцоо хадгалагдсан өгөгдөлд удахгүй хандах болно. Өгөгдлийн сангийн администраторууд буферийн сангийн хэмжээг тохируулахдаа хамгийн өндөр хөшүүрэг бүхий тохиргооны шийдвэрүүдийн нэг болгон тохируулдаг. Хэт жижиг буферийн сан нь хуудсыг тогтмол нүүлгэхэд хүргэдэг бөгөөд энэ нь thrashing хэмээх үзэгдлийг үүсгэдэг бөгөөд систем нь асуулга явуулахаас илүү кэшийн алдагдлыг удирдахад илүү их цаг зарцуулдаг.

Гол ойлголт: Ихэнх OLTP ажлын ачаалалд сайн хэмжээтэй буфер сан нь нийт уншсан өгөгдлийн 95-99% нь RAM-аас үйлчилдэг гэсэн үг юм. Ажиллаж буй багц буюу асуулгад байнга хүрдэг өгөгдлийн дэд багц нь нийт мэдээллийн сангийн хэмжээнээс хамаагүй бага байдаг. Буферийн сангаа бүхэлд нь өгөгдлийн багцдаа биш харин өөрийн ажлын багцад тохируулах нь таны хийж болох хамгийн өндөр өгөөжтэй тааруулах үйлдэл юм.

Үйлдлийн системийн кэш нь RAM болон дискний хоорондох зайг хэрхэн нөхдөг вэ?

Өгөгдлийн сангийн өөрийн буфер сан алга болсон ч гэсэн асуулга нь жинхэнэ дискийг уншихад хараахан зориулагдаагүй байна. Үйлдлийн систем нь төхөөрөмжийг блоклохын тулд унших, бичих үйлдлийг буфер болгон цөмөөр удирддаг RAM-ын бүсийг хуудасны кэш (мөн файлын системийн кэш гэж нэрлэдэг) хадгалдаг. Өгөгдлийн сангийн хөдөлгүүр нь буферийн сандаа байхгүй хуудсыг хүсэх үед үйлдлийн системийн цөм нь хадгалалтын хянагч руу физик оролт гаралтын команд өгөхөөс өмнө өөрийн хуудасны кэшийг шалгадаг.

💡 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 хуудасны кэш: Буферийн сан бага байх үед хамгаалалтын сүлжээг хангана. Мөн том хүснэгтүүдийг дараалан сканнердах үед чухал ач холбогдолтой бөгөөд өөрөөр хэлбэл халуун хуудсыг буферийн сангаас гаргах болно.
  • Хадгалах хянагчийн кэш (техник хангамжийн давхарга): Дөрөв дэх, ихэвчлэн үл тоомсорлодог давхарга — NVMe SSD болон RAID хянагчууд нь зай эсвэл конденсаторын нөөц бүхий самбар дээрх бичих кэшийг хадгалдаг. Энэ нь fsync хоцролтоос болж бичих чадварыг алдагдуулахгүйгээр бат бөх чанарыг хамгаалдаг.
  • Програмын давхаргын кэш (Redis, Memcached): Өгөгдлийн сангийн дээгүүр байрлаж, цуваажсан асуулгын үр дүн эсвэл тооцоолсон объектуудыг кэшлэхэд өгөгдлийн санд орохоос зайлсхийх боломжтой. Энэ нь олон мянган хэрэглэгчдэд нэгэн зэрэг үйлчилдэг олон түрээслэгчтэй SaaS платформуудад тохиромжтой.

Орчин үеийн бизнесийн платформууд найдвартай байдлын үүднээс кэшийн архитектурыг хэрхэн ашиглаж чадах вэ?

CRM, төслийн удирдлага, цахим худалдаа, аналитик гэх мэт олон функциональ модулиудаар ажилладаг бизнесүүдийн хувьд кэшийн архитектур нь багууд өсөхийн хэрээр платформын хариу үйлдлийг шууд тодорхойлдог. Давхаргатай кэш стратеги дээр суурилсан платформууд нь пропорциональ дэд бүтцийн зардалгүйгээр хэдэн арван мянган нэгэн зэрэг хэрэглэгчдэд үйлчлэх боломжтой. Хамгийн гол нь кэшийн хил хязгаарыг хүндэтгэсэн өгөгдөлд нэвтрэх загварыг зохион бүтээх явдал юм: халуун өгөгдлийг жижиг байлгах, хандалтын хэв маягийг урьдчилан таамаглах, буферийн сангийн ачааллыг хуваарилахын тулд унших хуулбарыг ашиглах, ижил өгөгдөлтэй олон хэрэглэгчдэд нэгэн зэрэг үйлчлэх төгсгөлийн цэгүүдэд зориулсан Redis зэрэг програмын давхаргын кэшийг мэдээллийн сангийн өмнө байрлуулах.

Mewayz нь яг ийм философитойгоор бүтээгдсэн. 138,000 гаруй хэрэглэгчийг ажиллуулдаг 207 нэгдсэн бизнесийн модулиудтай, платформын өгөгдлийн давхарга нь уншилтын дийлэнх хувийг кэшээс авахаар зохион бүтээгдсэн бөгөөд энэ нь хариу өгөх хугацааг хурдан, дэд бүтцийн зардлыг та сард 19 доллар эсвэл мэргэжлийн түвшинд ажиллаж байгаа эсэхээс үл хамааран урьдчилан таамаглах боломжтой болгодог.

Байнга асуудаг асуултууд

Асуулгын кэшийг идэвхгүй болгосноор өгөгдлийн сангийн гүйцэтгэл үргэлж сайжирдаг уу?

Үргэлж биш, гэхдээ бичихэд их ачаалалтай үед энэ нь ихэвчлэн тохиолддог. Асуулгын кэш нь тууштай байдлыг хадгалахын тулд глобал mutex шаарддаг бөгөөд энэ нь өндөр зэрэглэлийн үед саад болдог. Энэ шалтгааны улмаас 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 модуль, нэг уялдаатай платформ, таны анхны хэрэглэгчээс зуун мянга хүртэлх хугацаанд найдвартай ажиллах боломжтой.

тэсрэлтийг баталгаажуулдаг.

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