Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

การใช้พูลบัฟเฟอร์ไฮบริดของ Microsoft SQL Server

Microsoft® เปิดตัวคุณลักษณะใหม่ที่เรียกว่าไฮบริดบัฟเฟอร์พูลใน SQLServer® 2019 (ดูตัวอย่าง) CTP 2.1 คุณลักษณะนี้ช่วยให้คุณสามารถเข้าถึงหน้าข้อมูลโดยตรงในไฟล์ฐานข้อมูลที่จัดเก็บไว้ในอุปกรณ์หน่วยความจำถาวร (PMEM)

PMEM คืออะไร

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

ประโยชน์หลักของ PMEM ได้แก่:

  • ให้การเข้าถึงข้อมูลที่รวดเร็วและใกล้เคียงแบบเรียลไทม์สำหรับชุดข้อมูลขนาดใหญ่โดยไม่มีเวลาแฝงเมื่อเทียบกับแฟลชโซลิดสเตตไดรฟ์ (SSD)
  • เพิ่มปริมาณงานมากกว่าที่จัดเก็บข้อมูลแฟลช
  • ราคาถูกกว่า Dynamic Random Access Memory (DRAM)
  • สามารถแคชได้ นี่เป็นข้อได้เปรียบอย่างมากเหนือ Peripheral ComponentInterconnect (PCIe) ซึ่งไม่สามารถแคชได้ในหน่วยประมวลผลกลาง (CPU)
  • เก็บข้อมูลไว้ในหน่วยความจำหลังจากไฟฟ้าขัดข้องหรือปิดเครื่อง

คุณสามารถใช้ PMEM ได้หลายวิธีเพื่อลดเวลาแฝงสำหรับแอปพลิเคชันที่คุณต้องการเข้าถึงข้อมูลได้เร็วขึ้นด้วยข้อมูลจำนวนมหาศาล เช่น แอปพลิเคชัน Internet ofThings (IoT) การวิเคราะห์ภัยคุกคามทางไซเบอร์ และการซื้อขายทางการเงินอื่นๆ

แนวคิด

ข้อกำหนดต่อไปนี้ใช้ได้กับคุณลักษณะส่วนขยายบัฟเฟอร์พูล:

  • โซลิดสเทตไดรฟ์ (SSD) :จัดเก็บข้อมูลในหน่วยความจำ (RAM) อย่างต่อเนื่อง

  • บัฟเฟอร์ :ใน SQL Server บัฟเฟอร์คือเพจขนาด 8 KB ในหน่วยความจำ ซึ่งมีขนาดเท่ากับหน้าข้อมูลหรือดัชนี ดังนั้นบัฟเฟอร์แคชจึงแบ่งออกเป็นหน้าขนาด 8 KB Apage ยังคงอยู่ในบัฟเฟอร์แคชจนกว่าตัวจัดการบัฟเฟอร์ต้องการพื้นที่บัฟเฟอร์เพื่ออ่านข้อมูลเพิ่มเติม ข้อมูลจะถูกเขียนกลับไปยังดิสก์ก็ต่อเมื่อมีการแก้ไข หน้าที่แก้ไขในหน่วยความจำเหล่านี้เรียกว่าหน้าสกปรก เพจจะสะอาดเมื่อเพจนั้นเทียบเท่ากับอิมเมจฐานข้อมูลบนดิสก์ ข้อมูลในบัฟเฟอร์แคชสามารถแก้ไขได้หลายครั้งก่อนที่จะเขียนกลับไปยังดิสก์

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

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

  • การเข้าถึงโดยตรง (DAX) :DAX ทำงานเหมือนหน่วยความจำเพื่อให้ได้เวลาแฝงต่ำสุด แอปจะแก้ไขหน่วยความจำถาวรโดยตรง โดยข้ามสแต็ก ตัวเลือกนี้ใช้ได้กับ NTFS เท่านั้น

รูปภาพต่อไปนี้แสดง DAX:

การใช้พูลบัฟเฟอร์ไฮบริดของ Microsoft SQL Server

ที่มา :https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/deploy-pmem

ไฮบริดบัฟเฟอร์พูลคืออะไร

ในระบบดั้งเดิม SQL Server จะแคชหน้าข้อมูลในบัฟเฟอร์พูลแบบ DRAM ด้วยบัฟเฟอร์พูลแบบไฮบริด SQL Server จะข้ามการคัดลอกเพจไปยังส่วนที่ใช้ DRAM ของบัฟเฟอร์พูล และแทนที่จะอ้างอิงเพจโดยตรงบนไฟล์ฐานข้อมูลที่อยู่บนอุปกรณ์ PMEM ระบบเข้าถึงไฟล์ข้อมูลใน PMEM สำหรับพูลบัฟเฟอร์ไฮบริดโดยใช้หน่วยความจำที่แมป I/O ซึ่งเรียกอีกอย่างว่าการตรัสรู้ของไฟล์ข้อมูลภายใน SQL Server

กระบวนการนี้ก่อให้เกิดประโยชน์ด้านประสิทธิภาพโดยหลีกเลี่ยงสำเนาของเพจไปยัง DRAM และขจัดความจำเป็นสำหรับสแต็ก I/O ของระบบปฏิบัติการในการเข้าถึงเพจบนพื้นที่เก็บข้อมูลถาวร

ระบบสามารถเข้าถึงหน้าที่สะอาดได้โดยตรงบนอุปกรณ์ PMEM เท่านั้น เมื่อเพจสกปรก ระบบจะคัดลอกเพจนั้นไปยังบัฟเฟอร์พูลแบบ DRAM แล้วเขียนกลับไปยังอุปกรณ์ PMEM กระบวนการนี้เกิดขึ้นระหว่างการดำเนินการตามจุดตรวจปกติ

คุณลักษณะบัฟเฟอร์พูลแบบไฮบริดพร้อมใช้งานสำหรับทั้ง Windows® และ Linux® อุปกรณ์ PMEM ต้องจัดรูปแบบด้วยระบบไฟล์ที่รองรับ DirectAccess(DAX) DAX รองรับระบบไฟล์ต่อไปนี้:

  • Extended File System (XFS)
  • EXT4
  • ระบบไฟล์เทคโนโลยีใหม่ (NTFS)

SQL Server จะตรวจจับโดยอัตโนมัติว่าไฟล์ข้อมูลอยู่ในอุปกรณ์ PMEM ที่จัดรูปแบบอย่างเหมาะสมหรือไม่ และทำการแมปหน่วยความจำในพื้นที่ของผู้ใช้ การแมปนี้จะเกิดขึ้นเมื่อเริ่มต้น เมื่อมีการแนบ กู้คืน หรือสร้างฐานข้อมูลใหม่ และเมื่อเปิดใช้งานคุณลักษณะพูลบัฟเฟอร์แบบไฮบริดสำหรับฐานข้อมูล

เปิดใช้งานไฮบริดบัฟเฟอร์พูล

SQL Server 2019 แนะนำภาษาข้อมูลแบบไดนามิก (DDL) เพื่อควบคุมบัฟเฟอร์พูลแบบไฮบริด ตัวอย่างต่อไปนี้เปิดใช้งานพูลบัฟเฟอร์ไฮบริดสำหรับอินสแตนซ์ของ SQLServer:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = ON;

โดยค่าเริ่มต้น ไฮบริดบัฟเฟอร์พูลถูกตั้งค่าให้ปิดใช้งานที่ขอบเขตอินสแตนซ์

หมายเหตุ :เพื่อให้การเปลี่ยนแปลงการตั้งค่ามีผล คุณต้องเริ่มอินสแตนซ์ของเซิร์ฟเวอร์ SQL ใหม่ การรีสตาร์ทช่วยอำนวยความสะดวกในการจัดสรรหน้าแฮชที่เพียงพอเพื่อรองรับความจุ PMEM ทั้งหมดบนเซิร์ฟเวอร์

ตัวอย่างต่อไปนี้เปิดใช้งานพูลบัฟเฟอร์แบบไฮบริดสำหรับฐานข้อมูลเฉพาะ:

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = ON;

โดยค่าเริ่มต้น ไฮบริดบัฟเฟอร์พูลถูกตั้งค่าให้เปิดใช้งานที่ขอบเขตฐานข้อมูล

ปิดใช้งานพูลบัฟเฟอร์ไฮบริด

ตัวอย่างต่อไปนี้ปิดใช้งานพูลบัฟเฟอร์ไฮบริดสำหรับอินสแตนซ์ของ SQL Server:

ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED HYBRID_BUFFER_POOL = OFF;

โดยค่าเริ่มต้น ไฮบริดบัฟเฟอร์พูลถูกตั้งค่าให้ปิดใช้งานที่ขอบเขตอินสแตนซ์

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

ตัวอย่างต่อไปนี้ปิดใช้งานพูลบัฟเฟอร์ไฮบริดสำหรับฐานข้อมูลเฉพาะ:

ALTER DATABASE <databaseName> SET MEMORY_OPTIMIZED = OFF;

โดยค่าเริ่มต้น ไฮบริดบัฟเฟอร์พูลถูกตั้งค่าให้เปิดใช้งานที่ขอบเขตฐานข้อมูล

ดูการกำหนดค่าพูลบัฟเฟอร์ไฮบริด

ตัวอย่างต่อไปนี้จะคืนค่าสถานะปัจจุบันของการกำหนดค่าระบบบัฟเฟอร์แบบไฮบริดสำหรับอินสแตนซ์ของ SQL Server:

SELECT * FROM sys.configurations WHERE     name = 'hybrid_buffer_pool';

ตัวอย่างต่อไปนี้จะคืนค่าสองตาราง:

SELECT * FROM sys.configurations WHERE name = 'hybrid_buffer_pool';

SELECT name, is_memory_optimized_enabled FROM sys.databases;
  • ตารางแรกแสดงสถานะปัจจุบันของการกำหนดค่าระบบบัฟเฟอร์พูลแบบไฮบริดสำหรับอินสแตนซ์ของ SQL Server
  • ตารางที่สองแสดงรายการฐานข้อมูลและการตั้งค่าระดับฐานข้อมูลสำหรับพูลบัฟเฟอร์แบบไฮบริด

แนวทางปฏิบัติที่ดีที่สุดสำหรับบัฟเฟอร์พูลแบบไฮบริด

ขอแนะนำว่าอย่าเปิดใช้งานไฮบริดบัฟเฟอร์พูลบนอินสแตนซ์ที่มี RAM น้อยกว่า 16 GB

เมื่อทำการฟอร์แมตอุปกรณ์ PMEM ของคุณบน Windows ให้ใช้หน่วยการจัดสรรที่ใหญ่ที่สุดสำหรับ NTFS (2 MB ใน Windows Server® 2019) และตรวจดูให้แน่ใจว่าอุปกรณ์ได้รับการฟอร์แมตสำหรับ DAX แล้ว ขนาดไฟล์ควรเป็นทวีคูณของ 2 MB (โมดูล 2 MB ควรเท่ากับศูนย์)

หากการตั้งค่าขอบเขตเซิร์ฟเวอร์สำหรับพูลบัฟเฟอร์ไฮบริดถูกตั้งค่าเป็นปิดใช้งาน ฐานข้อมูลผู้ใช้จะไม่ใช้พูลไฮบริดบัฟเฟอร์

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

บทสรุป

ไฮบริดบัฟเฟอร์พูลช่วยให้คุณสามารถเข้าถึงหน้าข้อมูลฐานข้อมูลที่จัดเก็บไว้ในอุปกรณ์ PMEM ได้โดยตรง ประสิทธิภาพของระบบได้รับการปรับปรุงเนื่องจากไม่มีการคัดลอกเพจไปยัง DRAM และสแต็ค I/O ของระบบปฏิบัติการไม่จำเป็นต้องเข้าถึงเพจบนที่เก็บข้อมูลถาวร

อ้างถึงเอกสารต่อไปนี้สำหรับข้อมูลเพิ่มเติม:

Microsoft อธิบายตัวอย่าง SQL Server 2019 ล่าสุดและการปรับปรุง Azure SQL พูลบัฟเฟอร์ไฮบริด

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม

เพิ่มประสิทธิภาพสภาพแวดล้อมของคุณด้วยการดูแลระบบ การจัดการ และการกำหนดค่าจากผู้เชี่ยวชาญ

บริการแอปพลิเคชันของ Rackspace(RAS) ผู้เชี่ยวชาญจะให้บริการแบบมืออาชีพและที่มีการจัดการในแอปพลิเคชันที่หลากหลาย:

  • แพลตฟอร์มอีคอมเมิร์ซและประสบการณ์ดิจิทัล
  • การวางแผนทรัพยากรองค์กร (ERP)
  • ระบบธุรกิจอัจฉริยะ
  • การจัดการลูกค้าสัมพันธ์ของ Salesforce (CRM)
  • ฐานข้อมูล
  • อีเมลโฮสติ้งและประสิทธิภาพการทำงาน

เราจัดส่ง:

  • ความเชี่ยวชาญที่เป็นกลาง :เราลดความซับซ้อนและเป็นแนวทางในการสร้างสรรค์สิ่งใหม่ของคุณ โดยมุ่งเน้นที่ความสามารถที่มอบคุณค่าในทันที
  • ประสบการณ์สุดคลั่ง ™:เรารวมกระบวนการก่อน เทคโนโลยีที่สอง®แนวทางพร้อมการสนับสนุนทางเทคนิคเฉพาะเพื่อมอบโซลูชันที่ครอบคลุม
  • ผลงานที่ยอดเยี่ยม :เราใช้ประสบการณ์ระบบคลาวด์ที่ครอบคลุมเพื่อช่วยคุณเลือกและปรับใช้เทคโนโลยีที่เหมาะสมบนระบบคลาวด์ที่เหมาะสม
  • ส่งไว :เราพบคุณในที่ที่คุณอยู่ในการเดินทางของคุณและปรับความสำเร็จของเราไปพร้อมกับคุณ

แชทเลยเพื่อเริ่มต้น