|
|
Mission Critical In-memory
SQL Server 2016 เปิดตัวไปได้ไม่นาน สร้างเสียงฮือฮาอย่างมาก รวมไปถึง Gartner เองก็ยกให้ Microsoft เองเป็นผู้นำด้านของระบบจัดการฐานข้อมูลของโลกไปแล้ว วันนี้เราจะมาดู SQL Server 2016 ที่ได้ปรับปรุง In-memory ต่อยอดมาจาก 2014 เดิมทำให้ประสิทธิภาพสูงขึ้น
หลังจำกกำรเปิดตัว In-Memory Optimized Table ในปี 2557 ทำให้ Microsoft SQL Server มิได้เป็นแค่เพียง OLTP Database ธรรมดำอีกต่อไป แต่ยังเป็ นผู้นำด้ำน Mission Critical OLTP ในตลาดซอฟต์แวร์อีกด้วย โดยประสานการทำงานรวมกันระหว่ำง In-Memory OLTP และ In-memory ColumnStore ทีได้รับกำรปรับปรุงประสิทธิภาพให้ดียิ่งขึน ช่วยให้สำมารถตรวจพบข้อมูลที่ เป็นปัญหาในการประกอบธุรกิจได้อย่ำงทันควันตามเวลาจริงที่ เกิดขึน ส่งผลถึงการรับมือกับปัญหานั้นได้อย่างทันท่วงทีและถูกต้อง
ใน Version ก่อนหน้านี้ คนที่ใช้ SQL อาจจะได้รู้จักกับประสิทธิภาพที่สูงขึ้น 30 เท่าของ OLTP เดิม โดยไม่ต้องคำนวณการแก้ไขโปรแกรมใหม่ แต่ยังต้องปรับปรุงแก้ไขบางส่วนในฐานข้อมูล โดยการปรับปรุงแก้ไขนั้นต้องแก้ไข 3 อย่างด้วยกันคือ
- โครงสร้างข้อมูล (Data Structure)
มีการออกแบบโครงสรา้งการจดัเก็บขอ้มูลในตารางใหม ทั้งหมดทั้ง Row และ Index โดยการออกแบบในลกัษณะ Multi-versioning เพิ่อใหส้ามารถอปัเดตไดโ้ดยไม่ตอ้งมี การล็อกขอ้มูล (Lock)
- การไม่มี Lock และ Latching
การ Lock ข้อมูลนั้นสร้างปัญหาอย่างมากในการขอข้อมูล และการตอบสนองที่ช้า โดยเฉพาะเมื่อมีการใช้งานพร้อมกันหลายๆคน ดังนั้นการออกแบบ In-memory OLTP จึงได้กำจัดปัญหานี้โดยการออกแบบโครงสร้างใหม่ทั้งหมด โดยไม่ต้องอ่านข้อมูลจาก Disk ไปพักที่ Buffer อีกต่อไป และ Row ก็ไม่ถกเก็บไว้ในรูปแบบที่เป็น Page เหมือนเดิมอีกต่อไป จึงไม่เกิด Page latch เป็นจำนวนมากใน Version เก่าๆ
- Native Compilation
ใน Version ก่อนหน้าโครงสร้างข้อมูลจะเป็นแบบ Disk-baseed Table เมื่อทำการ Recompile สิ่งต่างๆ ไม่ว่าจะ Query หรือ Stored procedure จริงๆก็เป็นเพียงการแปลงรูปแบบที่ SQL Server ทำงานได้ง่ายขึ้นเท่านั้น ไม่ได้ทำการ Recompile เป็น Machine Code โดยตรงแต่อย่างใด แต่ใน In-memory OLTP Version ใหม่จะใช้ Machine Code ตรงโดน คือ Native และถูกจัดเก็บในรูปแบบของ DLL ทำให้ไม่จำเป็นต้องแปลซ้ำอีกเมื่อทำงานร่วมกับ In-memory Table จึงทำให้ประมวลผลได้ไว
การขยายขีดความสามารถเพิ่มเติมของ In-Memory OLTP ใน SQL Server 2016
ขนาดสูงสุดของ In-memory optimized table
ในเวอร์ชันก่อนหน้านั้ น In-Memory Optimized Table ไม่ควรมีขนาดใหญ่กว่า 256 GB ซึ่งขนาดที่ ระบุนี้ เป็นเพียง ข้อแนะนำเท่านั้ น แต่ในทางปฏิบัติจะมีขนาดเท่าไรก็ได้ แต่ ใน SQL Server 2016 ทีมผู้พัฒนาได้ดำเนินการทดสอบ เพิมเติม ไม่ว่าจะเป็นเรืองการจัดเก็บและนำกลับมาใช้งานได้ อย่างรวดเร็วเมือต้องการกู้คืนข้อมูล และเลือกที่จะกำหนด ขนาดใหญ่สุดที่ แนะนำไว้ที่ 2 TB จริงอยู่ว่าผู้ใช้สามารถ ใช้ข้อมูลขนาดใหญ่เท่าไรก็ได้ตามทีต้องการ แต่อย่าลืมว่า จะต้องมีหน่วยความจำที่ รองรับตาราง (Table) เหล่านั้น ทั้งหมดได้อย่างเพียงพอด้วยเช่นกัน
ภาษาที่ รองรับ (Collation)
ในเวอร์ชันก่อนหน้านั้น In-Memory Optimized Table บังคับให้ใช้งานได้กับข้อมูลทีจัดเก็บโดยใช้ Binary Collation แบบ BIN2 เท่านั้ น นอกจากนีการเปรียบเทียบลำดับของตัวอักษรใน Native Compiled Procedure ก็ จำเป็ นต้องใช้ BIN2 ด้วยเช่นเดียวกัน ทำให้มีข้อจำกัดใน หลายภาษา หรือในข้อมูลทีจัดเก็บ Collation รูปแบบอื นไม่สามารถเปลียนมาทำ In-Memory Optimized ได้ แต่ ใน SQL Server 2016 ได้กำจัดข้อจำกัดนีออกไป ทำให้ สามารถใช้งาน Collation ของภาษาใดๆ ก็ได้ตามต้องการ
การแก้ไขโครงสร้างข้อมูล (Schema Changes)
ในเวอร์ชันก่อนหน้า หลังจากการสร้าง In-Memory Optimized Table เสร็จสินแล้ว จะไม่อนุญาตให้ดำเนิน การแก้ไขโครงสร้างข้อมูลของตารางได้อีก หากต้องการทำ จะต้อง Drop ทิ้งแล้วสร้างใหม่ แต่ใน SQL Server 2016 สามารถใช้คำสั่ ง ALTER TABLE ในการแก้ไขได้ไม่ว่าจะเป็นการเพิม ลบ แก้ไขคอลัมน์หรือ Rebuild index ก็ทำได้ตามต้องการ
Parallel Plans
ในเวอร์ชันก่อนหน้านั้ น Query Optimizer จะไม่สร้าง Parallel Plan สำหรับ In-Memory Optimized Table ไม่ว่าในกรณีใดก็ตาม แต่ใน SQL Server 2016 สำหรับ บาง Operation ทีมีการใช้ Hash index อาจจะกระทำ ในแบบ Parallel ได้
Transparent Data Encryption (TDE)
ในเวอร์ชันก่อนหน้า มีข้อจำกัดที่ ไม่สามารถทำ TDE บน In-Memory Optimized Table ซึ่ งมีการจัดเก็บใน filegroup แบบ MEMORY_OPTIMIZED_DATA แต่ใน SQL Server 2016 สามารถทำได้
Native Compilation
ในเวอร์ชันก่อนหน้า เมือต้องการเขียน Native Compile Procedure จะมีข้อจำกัดมากมายในการใช้คำสั่ งต่างๆ ทำให้เขียนได้เฉพาะการทำงาน DML แบบง่ายๆ เท่านั้ น แต่ใน SQL Server 2016 ยอมให้มีการใช้คำสั่งต่างๆ เพิ่มเติมได้มากขึน เช่น
- LEFT และ RIGHT OUTER JOIN
- SELECT DISTINCT
- OR และ NOT operators
- Subqueries ที่ ใช้ SELECT ได้เต็มรูปแบบ
- การเรียก Stored Procedure แบบ Nested
- UNION และ UNION ALL
- Built-in Math Functions ทั้งหมด
ข้อมูลอ้างอิงจาก http://download.microsoft.com/download/8/3/6/8360731A-A27C-4684-BC88-FC7B5849A133/SQL_Server_2016_In_Memory_OLTP_White_Paper.pdf
|
|
|
|