Hybrid Buffer Pool คืออะไร?
Microsoft® ได้แนะนำฟีเจอร์ใหม่ชื่อ Hybrid Buffer Pool ใน SQL Server® 2019 (Preview) CTP 2.1 ฟีเจอร์นี้ช่วยให้คุณเข้าถึงหน้าข้อมูล (data pages) ในไฟล์ฐานข้อมูลที่จัดเก็บอยู่ในอุปกรณ์ Persistent Memory (PMEM) ได้โดยตรง
PMEM คืออะไร?
PMEM เป็นอุปกรณ์หน่วยความจำแบบ Solid-state ประสิทธิภาพสูง ที่เข้าถึงได้ระดับไบต์ (byte-addressable) และติดอยู่บน Memory Bus มีข้อได้เปรียบมากมายเหนืออุปกรณ์จัดเก็บข้อมูลอื่นๆ
ข้อได้เปรียบหลักของ PMEM
- ให้การเข้าถึงข้อมูลที่เร็วขึ้นและใกล้เคียง Real-time สำหรับชุดข้อมูลขนาดใหญ่ โดยไม่มี Latency เหมือน Flash SSD
- เพิ่ม Throughput มากกว่าจัดเก็บแบบ Flash
- ราคาถูกกว่า DRAM (Dynamic Random Access Memory)
- สามารถ Cache ได้ — ข้อได้เปรียบสำคัญเหนือ PCIe (Peripheral Component Interconnect) ที่ CPU ไม่สามารถ Cache ได้
- รักษาข้อมูลในหน่วยความจำไว้หลังจากตัดไฟหรือปิดเครื่อง
คุณสามารถนำ PMEM ไปใช้ในหลายรูปแบบเพื่อลด Latency สำหรับแอปพลิเคชันที่ต้องการการเข้าถึงข้อมูลเร็วพร้อมปริมาณข้อมูลมหาศาล เช่น IoT, การวิเคราะห์ภัยคุกคามทางไซเบอร์, และการซื้อขายทางการเงิน เป็นต้น
แนวคิดพื้นฐาน
คำศัพท์ต่อไปนี้เกี่ยวข้องกับฟีเจอร์ Buffer Pool Extension:
- Solid-state drive (SSD): จัดเก็บข้อมูลในหน่วยความจำ (RAM) แบบ Persistent
- Buffer: ใน SQL Server Buffer คือหน้าขนาด 8 KB ในหน่วยความจำ ขนาดเท่ากับหน้าข้อมูลหรือดัชนี (index page) Buffer Cache จึงถูกแบ่งเป็นหน้าขนาด 8 KB หน้าจะคงอยู่ใน Buffer Cache จนกว่า Buffer Manager จะต้องการพื้นที่เพื่ออ่านข้อมูลเพิ่ม ข้อมูลจะถูกเขียนกลับดิสก์ก็ต่อเมื่อมีการแก้ไข หน้าที่ถูกแก้ไขในหน่วยความจำเรียกว่า Dirty Pages หน้าจะสะอาด (Clean) เมื่อเทียบเท่ากับ Image บนดิสก์ ข้อมูลใน Buffer Cache อาจถูกแก้ไขหลายครั้งก่อนเขียนกลับดิสก์
- Buffer Pool: เรียกอีกอย่างว่า Buffer Cache เป็นทรัพยากรสากล (Global Resource) ที่แบ่งปันโดยทุกฐานข้อมูลสำหรับหน้าข้อมูลที่ Cache ไว้ ขนาดสูงสุดและต่ำสุดของ Buffer Pool Cache ถูกกำหนดตอนเริ่มต้น หรือเมื่อ Reconfigure Instance แบบ Dynamic ด้วย sp_configure ขนาดนี้กำหนดจำนวนหน้าสูงสุดที่ Cache ได้ใน Buffer Pool หน่วยความจำสูงสุดที่ Buffer Pool Extension สามารถ Commit ได้ อาจถูกจำกัดโดยแอปพลิเคชันอื่นที่รันบนเครื่องเดียวกัน หากสร้าง Memory Pressure มาก
- Checkpoint: สร้างจุดที่รู้สถานะที่ดี (Known Good Point) เพื่อให้ Database Engine เริ่มนำการเปลี่ยนแปลงจาก Transaction Log ไป Apply ระหว่าง Recovery หลัง Shutdown หรือ Crash แบบไม่คาดคิด Checkpoint เขียน Dirty Pages และข้อมูล Transaction Log จากหน่วยความจำไปดิสก์ และบันทึกข้อมูลเกี่ยวกับ Transaction Log
- Direct Access (DAX): DAX ทำงานเหมือนหน่วยความจำเพื่อให้ Latency ต่ำสุด แอปพลิเคชันแก้ไข Persistent Memory โดยตรง ข้าม Stack ไปเลย ตัวเลือกนี้ใช้ได้กับ NTFS เท่านั้น
ภาพประกอบการทำงานของ DAX:
แหล่งที่มา: https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-pmem
Hybrid Buffer Pool คืออะไร?
ในระบบแบบดั้งเดิม SQL Server จะ Cache หน้าข้อมูลไว้ใน Buffer Pool ที่อาศัย DRAM ด้วย Hybrid Buffer Pool SQL Server ข้ามการ Copy หน้าเข้า DRAM Buffer Pool แทนที่จะอ้างอิงหน้าโดยตรงบนไฟล์ฐานข้อมูลที่อยู่บนอุปกรณ์ PMEM ระบบเข้าถึงไฟล์ข้อมูลใน PMEM สำหรับ Hybrid Buffer Pool โดยใช้ Memory Mapped I/O ซึ่งรู้จักกันในชื่อ Enlightenment ของไฟล์ข้อมูลภายใน SQL Server
กระบวนการนี้ให้ประโยชน์ด้านประสิทธิภาพโดยหลีกเลี่ยงการ Copy หน้าไป DRAM และกำจัดความจำเป็นต้องใช้ I/O Stack ของระบบปฏิบัติการเพื่อเข้าถึงหน้าบน Persistent Storage
ระบบสามารถเข้าถึง Clean Pages บน PMEM ได้โดยตรงเท่านั้น เมื่อหน้ากลายเป็น Dirty ระบบจะ Copy ไปที่ DRAM Buffer Pool แล้วเขียนกลับ PMEM กระบวนการนี้เกิดขึ้นระหว่าง Checkpoint Operations ปกติ
ฟีเจอร์ Hybrid Buffer Pool รองรับทั้ง Windows® และ Linux® อุปกรณ์ PMEM ต้อง Format ด้วย File System ที่รองรับ DirectAccess (DAX) DAX รองรับ File System ดังต่อไปนี้:
- Extended File System (XFS)
- EXT4
- New Technology File System (NTFS)
SQL Server จะตรวจจับโดยอัตโนมัติว่าไฟล์ข้อมูลอยู่บน PMEM ที่ Format เหมาะสมหรือไม่ และทำ Memory Mapping ใน User Space การ Mapping นี้เกิดขึ้นตอน Startup, เมื่อ Attach/Restore/Create Database ใหม่ และเมื่อเปิดใช้งาน Hybrid Buffer Pool สำหรับ Database
เปิดใช้งาน Hybrid Buffer Pool
SQL Server 2019 แนะนำ DDL (Dynamic Data Language) เพื่อควบคุม Hybrid Buffer Pool ตัวอย่างต่อไปนี้เปิดใช้งานสำหรับ Instance:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;
ค่า Default Hybrid Buffer Pool คือ Disable ที่ Instance Scope
หมายเหตุ: เพื่อให้การเปลี่ยนแปลงมีผล ต้อง Restart SQL Server Instance Restart ช่วยให้ Allocate Hash Pages เพียงพอสำหรับ PMEM Capacity ทั้งหมดบน Server
ตัวอย่างเปิดใช้งานสำหรับ Database เฉพาะ:
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;
ค่า Default Hybrid Buffer Pool คือ Enable ที่ Database Scope
ปิดใช้งาน Hybrid Buffer Pool
ตัวอย่างปิดใช้งานสำหรับ Instance:
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;
ค่า Default คือ Disable ที่ Instance Scope
หมายเหตุ: ต้อง Restart Instance เพื่อป้องกัน Over-allocation ของ Hash Pages เนื่องจากไม่ต้อง Account PMEM Capacity แล้ว
ตัวอย่างปิดใช้งานสำหรับ Database เฉพาะ:
ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;
ค่า Default คือ Enable ที่ Database Scope
ดูการตั้งค่า Hybrid Buffer Pool
ตัวอย่าง Query สถานะปัจจุบันสำหรับ Instance:
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';
ตัวอย่าง Query ที่คืนค่า 2 ตาราง:
SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';
SELECT name, is_memory_optimized_enabled FROM sys.databases;
- ตารางแรก: สถานะ Hybrid Buffer Pool ของ Instance
- ตารางที่สอง: รายชื่อ Database และ Setting ระดับ Database
แนวทางปฏิบัติที่ดีที่สุด
- แนะนำ ไม่ให้เปิด Hybrid Buffer Pool บน Instance ที่มี RAM น้อยกว่า 16 GB
- ตอน Format PMEM บน Windows ใช้ Allocation Unit Size ใหญ่สุดสำหรับ NTFS (2 MB ใน Windows Server® 2019) และตรวจสอบว่า Format สำหรับ DAX แล้ว ขนาดไฟล์ควรเป็นพหุคูณของ 2 MB (Modulo 2 MB = 0)
- ถ้า Server-scoped Setting เป็น Disabled Hybrid Buffer Pool จะไม่ถูกใช้โดย User Database ใดๆ
- ถ้า Server-scoped Setting เป็น Enabled คุณสามารถปิดใช้งานสำหรับ User Database เฉพาะรายได้ โดยปิดที่ Database-scoped Level
สรุป
Hybrid Buffer Pool ช่วยให้คุณเข้าถึงหน้าข้อมูลฐานข้อมูลที่จัดเก็บใน PMEM ได้โดยตรง ประสิทธิภาพระบบดีขึ้นเพราะไม่ต้อง Copy หน้าไป DRAM และ I/O Stack ของ OS ไม่ต้องเข้าถึงหน้าบน Persistent Storage
อ้างอิงเอกสารเพิ่มเติม:
- Microsoft Describes Latest SQL Server 2019 Preview and Azure SQL Improvements Hybrid Buffer Pool
ใช้แท็บ Feedback เพื่อแสดงความคิดเห็นหรือถามคำถาม
เพิ่มประสิทธิภาพสภาพแวดล้อมด้วยบริการผู้เชี่ยวชาญ
ผู้เชี่ยวชาญ Rackspace Application Services (RAS) ให้บริการ Professional และ Managed Services ครอบคลุม Portfolio หลากหลาย:
- Platform สำหรับ eCommerce และ Digital Experience
- Enterprise Resource Planning (ERP)
- Business Intelligence
- Salesforce Customer Relationship Management (CRM)
- Databases
- Email Hosting และ Productivity
เรามอบ:
- Unbiased Expertise: ลดความซับซ้อนและนำทางการ Modernization เน้นความสามารถที่สร้างคุณค่าทันที
- Fanatical Experience™: รวมแนวทาง Process First. Technology Second.® พร้อม Technical Support ให้ Soluation ครบวงจร
- Unrivaled Portfolio: ประยุกต์ประสบการณ์ Cloud มากมายช่วยเลือกและ Deploy เทคโนโลยีที่เหมาะสมบน Cloud ที่เหมาะสม
- Agile Delivery: ตรงจุดที่คุณอยู่ในการเดินทางและทำให้ความสำเร็จของเราสอดคล้องกับคุณ
แชทตอนนี้เพื่อเริ่มต้น