Hacker News

แคชสามเลเยอร์ระหว่าง Select และ Disk

แคชสามเลเยอร์ระหว่าง Select และ Disk การสำรวจนี้เจาะลึกออกเป็น 3 ประการ โดยพิจารณาถึงความสำคัญและผลกระทบที่อาจเกิดขึ้น — ระบบปฏิบัติการธุรกิจ Mewayz

1 นาทีอ่าน

Mewayz Team

Editorial Team

Hacker News

เมื่อแอปพลิเคชันของคุณเรียกใช้คำสั่ง SELECT การสืบค้นนั้นแทบจะไม่แตะต้องดิสก์ที่หมุนอยู่หรือแม้แต่ที่จัดเก็บข้อมูลแฟลชดิบเลย โดยจะผ่านชั้นแคชที่แตกต่างกันสามชั้นซึ่งจะตัดสินอย่างเงียบ ๆ ว่าการตอบสนองของคุณมาถึงในหน่วยไมโครวินาทีหรือมิลลิวินาที การทำความเข้าใจเลเยอร์เหล่านี้คือความแตกต่างระหว่างแพลตฟอร์มธุรกิจที่ปรับขนาดได้อย่างง่ายดายและแพลตฟอร์มที่ปรับขนาดได้ตามภาระงานในโลกแห่งความเป็นจริง

จะเกิดอะไรขึ้นช่วงเวลาที่แบบสอบถาม SELECT ออกจากแอปพลิเคชันของคุณ

ทันทีที่แอปพลิเคชันของคุณส่งแบบสอบถาม SELECT จะเข้าสู่ไปป์ไลน์ที่นักพัฒนาส่วนใหญ่ไม่เคยตรวจสอบเลย กลไกฐานข้อมูลจะสกัดกั้นคำขอก่อนที่ I/O ใดๆ จะเกิดขึ้น โดยแยกวิเคราะห์ SQL ลงในแผนการดำเนินการภายใน และปรึกษาแนวป้องกันแรกทันที: แคชผลลัพธ์การสืบค้น หากมีการดำเนินการค้นหาที่เหมือนกันซึ่งมีพารามิเตอร์เหมือนกันเมื่อเร็วๆ นี้ กลไกสามารถส่งคืนชุดผลลัพธ์ที่แคชไว้โดยไม่ต้องแตะข้อมูลแม้แต่หน้าเดียว ซึ่งบางครั้งเรียกว่าแคชคิวรีหรือแคชผลลัพธ์ และบนเวิร์กโหลดที่มีการอ่านสูงและเขียนน้อย เช่น แดชบอร์ดการวิเคราะห์และโมดูลการรายงาน ก็สามารถกำจัดดิสก์ส่วนใหญ่ที่อ่านทั้งหมดได้

ข้อมูลเชิงลึกที่สำคัญที่นี่คือแคชการสืบค้นมีความไวสูงต่อการเปลี่ยนแปลงข้อมูล INSERT, UPDATE หรือ DELETE ใดๆ ในตารางที่เกี่ยวข้องจะทำให้ผลลัพธ์แคชที่เกี่ยวข้องไม่ถูกต้อง นี่คือสาเหตุที่ระบบธุรกรรมที่เน้นการเขียนข้อมูลจำนวนมากมักจะปิดใช้งานแคชการสืบค้นทั้งหมด และอาศัยเลเยอร์ที่ลึกกว่าแทน

บัฟเฟอร์พูลคืออะไร และเหตุใดจึงมีความสำคัญมากกว่าที่คุณคิด

แคชชั้นที่สองและที่อาจเรียกได้ว่าสำคัญที่สุดในระบบที่ใช้งานจริงคือบัฟเฟอร์พูล (เรียกว่าบัฟเฟอร์ที่ใช้ร่วมกันใน PostgreSQL ซึ่งเป็นบัฟเฟอร์พูล InnoDB ใน MySQL) นี่คือขอบเขตของ RAM ที่กลไกฐานข้อมูลใช้เพื่อเก็บหน้าข้อมูลที่เข้าถึงล่าสุด เมื่อไม่สามารถให้บริการแบบสอบถามจากแคชผลลัพธ์ได้ เอ็นจิ้นจะตรวจสอบว่าเพจข้อมูลที่ต้องการมีอยู่แล้วในบัฟเฟอร์พูลหรือไม่ ก่อนที่จะออกดิสก์ที่อ่าน

บัฟเฟอร์พูลทำงานบนหลักการของตำแหน่งชั่วคราวและเชิงพื้นที่: ข้อมูลที่เข้าถึงล่าสุดมีแนวโน้มที่จะเข้าถึงได้อีกครั้ง และข้อมูลที่เก็บไว้ใกล้กับข้อมูลที่เข้าถึงมีแนวโน้มที่จะเข้าถึงได้ในเร็วๆ นี้ ผู้ดูแลระบบฐานข้อมูลปรับขนาดพูลบัฟเฟอร์ซึ่งเป็นหนึ่งในการตัดสินใจกำหนดค่าที่ใช้ประโยชน์สูงสุด บัฟเฟอร์พูลที่เล็กเกินไปทำให้เกิดการลบเพจอย่างต่อเนื่อง ทำให้เกิดปรากฏการณ์ที่เรียกว่า thrashing ซึ่งระบบจะใช้เวลาในการจัดการแคชที่พลาดมากกว่าการดำเนินการค้นหา

💡 คุณรู้หรือไม่?

Mewayz ทดแทนเครื่องมือธุรกิจ 8+ รายการในแพลตฟอร์มเดียว

CRM · การออกใบแจ้งหนี้ · HR · โปรเจกต์ · การจอง · อีคอมเมิร์ซ · POS · การวิเคราะห์ แผนฟรีใช้ได้ตลอดไป

เริ่มฟรี →

ข้อมูลเชิงลึกที่สำคัญ: ในปริมาณงาน OLTP ส่วนใหญ่ พูลบัฟเฟอร์ที่มีขนาดเหมาะสมหมายความว่า 95–99% ของการอ่านข้อมูลทั้งหมดจะให้บริการจาก RAM ชุดการทำงาน - ชุดย่อยของข้อมูลของคุณที่มีการสืบค้นจริง ๆ บ่อยครั้ง - มักจะเล็กกว่าขนาดฐานข้อมูลทั้งหมดมาก การปรับขนาดบัฟเฟอร์พูลให้พอดีกับชุดการทำงาน ไม่ใช่ชุดข้อมูลทั้งหมด เป็นการดำเนินการปรับแต่งที่ให้ผลตอบแทนสูงสุดเพียงครั้งเดียวที่คุณสามารถทำได้

แคชของระบบปฏิบัติการเติมช่องว่างระหว่าง RAM และดิสก์อย่างไร

แม้ว่าพูลบัฟเฟอร์ของฐานข้อมูลจะขาดหายไป แบบสอบถามยังไม่ได้กำหนดไว้สำหรับการอ่านดิสก์ที่แท้จริง ระบบปฏิบัติการจะรักษาแคชของเพจ (หรือที่เรียกว่าแคชของระบบไฟล์) ซึ่งเป็นขอบเขตของ RAM ที่จัดการเคอร์เนลซึ่งจะบัฟเฟอร์การอ่านและเขียนไปยังบล็อกอุปกรณ์ เมื่อกลไกฐานข้อมูลร้องขอเพจที่ไม่มีอยู่ในพูลบัฟเฟอร์ เคอร์เนล OS จะตรวจสอบแคชเพจของตัวเองก่อนที่จะออกคำสั่ง I/O ฟิสิคัลไปยังตัวควบคุมการจัดเก็บข้อมูล

เลเยอร์ที่สามนี้ส่วนใหญ่มองไม่เห็นสำหรับนักพัฒนาแอปพลิเคชัน แต่มีความสำคัญอย่างยิ่งในระบบที่บัฟเฟอร์พูลฐานข้อมูลอยู่ภายใต้การจัดเตรียม แคชเพจ OS ถูกใช้ร่วมกันในทุกกระบวนการ ดังนั้นจึงแข่งขันกับแอปพลิเคชันเซิร์ฟเวอร์ เว็บเซิร์ฟเวอร์ และซอฟต์แวร์อื่นๆ ที่ทำงานบนโฮสต์เดียวกัน บนเซิร์ฟเวอร์ฐานข้อมูลเฉพาะ การแข่งขันนี้มีน้อยมาก และแคชของระบบปฏิบัติการก็มอบบัฟเฟอร์โอกาสครั้งที่สองที่มีประโยชน์ บนโฮสต์หรือคอนเทนเนอร์ที่ใช้ร่วมกันซึ่งมีหน่วยความจำจำกัด แคชของระบบปฏิบัติการมักจะเล็กเกินกว่าจะช่วยได้

แคชเลเยอร์ใดที่รับผิดชอบต่อประสิทธิภาพสูงสุดที่ชนะในทางปฏิบัติ?

ในระบบการผลิตในโลกแห่งความเป็นจริง โดมิพูลบัฟเฟอร์

Streamline Your Business with Mewayz

Mewayz brings 207 business modules into one platform — CRM, invoicing, project management, and more. Join 138,000+ users who simplified their workflow.

Start Free Today →

ลองใช้ Mewayz ฟรี

แพลตฟอร์มแบบออล-อิน-วันสำหรับ CRM, การออกใบแจ้งหนี้, โครงการ, HR และอื่นๆ ไม่ต้องใช้บัตรเครดิต

คู่มือที่เกี่ยวข้อง

คู่มือการจัดการ HR →

จัดการทีมอย่างมีประสิทธิภาพ: โปรไฟล์พนักงาน การจัดการการลา เงินเดือน และการประเมินผลการทำงาน

เริ่มจัดการธุรกิจของคุณอย่างชาญฉลาดวันนี้

เข้าร่วมธุรกิจ 30,000+ ราย แผนฟรีตลอดไป · ไม่ต้องใช้บัตรเครดิต

พบว่าสิ่งนี้มีประโยชน์หรือไม่? แบ่งปันมัน

พร้อมนำไปปฏิบัติแล้วหรือยัง?

เข้าร่วมธุรกิจ 30,000+ รายที่ใช้ Mewayz แผนฟรีตลอดไป — ไม่ต้องใช้บัตรเครดิต

เริ่มต้นทดลองใช้ฟรี →

พร้อมที่จะลงมือทำหรือยัง?

เริ่มต้นทดลองใช้ Mewayz ฟรีวันนี้

แพลตฟอร์มธุรกิจแบบครบวงจร ไม่ต้องใช้บัตรเครดิต

เริ่มฟรี →

ทดลองใช้ฟรี 14 วัน · ไม่ต้องใช้บัตรเครดิต · ยกเลิกได้ทุกเมื่อ