ความต้องการจำนวน CPU Core และ Memory สำหรับ SQL Server ขนาดต่างๆ: คู่มือเลือกฮาร์ดแวร์ให้เหมาะสม
คุณกำลังวางแผนติดตั้งหรืออัปเกรด SQL Server แต่ไม่แน่ใจว่าต้องใช้ CPU Core และ Memory เท่าไหร่ให้เหมาะกับขนาดฐานข้อมูล? บทความนี้จะช่วยให้คุณเข้าใจ ความต้องการจำนวน CPU Core และ Memory สำหรับ SQL Server ขนาดต่างๆ อย่างชัดเจน เพื่อให้ระบบทำงานได้อย่างมีประสิทธิภาพสูงสุด โดยอ้างอิงจากแนวทางอย่างเป็นทางการของ Microsoft และ Best Practice ที่ใช้งานจริง
ทำไม CPU Core และ Memory ถึงสำคัญสำหรับ SQL Server?
SQL Server เป็นฐานข้อมูลที่ต้องการทรัพยากรสูง โดยเฉพาะ CPU Core สำหรับการประมวลผลแบบขนาน (Parallel Processing) และ Memory สำหรับเก็บข้อมูลในแคช (Buffer Pool) หากเลือกไม่เหมาะสม อาจเกิดปัญหาเช่น CPU 100% Memory Leak หรือ CXPACKET Wait ที่ทำให้ระบบช้าลง
- CPU Core: ช่วยให้ SQL Server แบ่งงาน Query ออกเป็น Thread ย่อยๆ เพื่อประมวลผลเร็วขึ้น แต่ต้องตั้งค่า Max Degree of Parallelism (MaxDOP) ให้ถูกต้องเพื่อหลีกเลี่ยงการใช้ทรัพยากรเกินจำเป็น
- Memory: SQL Server จะใช้ RAM เพื่อเก็บข้อมูลและ Index หากน้อยเกินไป จะต้องอ่านจาก Disk บ่อย ส่งผลให้ประสิทธิภาพตก
การเลือก CPU Core และ Memory สำหรับ SQL Server ต้องพิจารณาขนาดฐานข้อมูล จำนวนผู้ใช้ และ Workload แบบ OLTP (Transaction) หรือ OLAP (Analytics)
ความต้องการขั้นต่ำและแนะนำตามรุ่น SQL Server
Microsoft กำหนด Hardware Requirements สำหรับ SQL Server 2019 (และรุ่นใหม่กว่า) ดังนี้:
| ส่วนประกอบ | ขั้นต่ำ | แนะนำ |
|---|---|---|
| Memory | Express: 512 MB อื่นๆ: 1 GB | Express: 1 GB อื่นๆ: อย่างน้อย 4 GB (เพิ่มตามขนาดฐานข้อมูล) |
| CPU | x64 Processor, 1.4 GHz (สูงสุด 64 Core ต่อ NUMA Node) | 2.0 GHz หรือ更快 |
| Storage | 6 GB (เพิ่มตาม Features) | SSD สำหรับ Data Files |
สำหรับ SQL Server ขนาดเล็ก (ฐานข้อมูล < 10 GB, ผู้ใช้ < 50 คน):
- CPU Core: 4-8 Core พอเพียงสำหรับ Query ทั่วไป
- Memory: 8-16 GB โดยตั้ง Max Server Memory ไว้ 70-80% ของ RAM ทั้งหมด เพื่อเหลือให้ OS
ตัวอย่าง: ถ้าเครื่องมี 16 GB RAM ตั้ง Max Server Memory = 12 GB (เหลือ 4 GB ให้ OS)
แนวทาง Best Practice สำหรับ SQL Server ขนาดกลางและใหญ่
สำหรับ SQL Server ขนาดกลาง (ฐานข้อมูล 10-100 GB, ผู้ใช้ 50-500 คน) และ ขนาดใหญ่ (>100 GB, ผู้ใช้ >500 คน) ต้องปรับตาม Best Practice:
1. การตั้งค่า MaxDOP ตามจำนวน CPU Core
MaxDOP ควบคุมจำนวน Core สูงสุดที่ Query หนึ่งตัวใช้ได้ หลีกเลี่ยงค่า 0 เพราะทำให้เกิด CXPACKET Wait (งานย่อยบางส่วนเสร็จช้า งานอื่นรอ)
ตารางแนะนำจาก Microsoft:
| จำนวน NUMA Node | Core CPU ต่อ Node | MaxDOP แนะนำ |
|---|---|---|
| 1 Node | ≤8 | เท่าจำนวน Core |
| 1 Node | >8 | 8 |
| หลาย Node | ≤16 | เท่าจำนวน Core |
| หลาย Node | >16 | 16 |
ตัวอย่างจริง: Server 96 Core (1 Node) → MaxDOP = 8 (ไม่ใช่ 96) เพื่อให้ Query อื่นๆ ใช้ Core ที่เหลือได้
2. การคำนวณ Max Server Memory
อย่าให้ SQL Server ใช้ RAM ทั้งหมด ต้องเหลือให้ OS อย่างน้อย 4-6 GB
สูตรคำนวณ (สำหรับ SQL Server 2019):
- Max Worker Threads = ถ้า Core ≤4: 512
Core 4-64: 512 + ((Core-4)*16)
Core >64: 512 + ((Core-4)*32) - Max Server Memory ≈ Stack Size (2,048 KB) * Max Worker Threads
ตัวอย่าง: 96 Core → Max Worker Threads = 512 + (92*32) = 3,456 → Max Memory ≈ 6.75 GB (แต่ปรับตาม RAM จริง เช่น RAM 128 GB ตั้ง 100 GB)
สำหรับ TempDB: สร้าง Data Files = จำนวน Core (สูงสุด 8) เพื่อลด Allocation Contention
3. ตารางแนะนำ CPU Core และ Memory สำหรับ SQL Server ขนาดต่างๆ
| ขนาด SQL Server | ฐานข้อมูล | ผู้ใช้พร้อมกัน | CPU Core แนะนำ | Memory แนะนำ | MaxDOP | Max Server Memory |
|---|---|---|---|---|---|---|
| ขนาดเล็ก | <10 GB | <50 | 4-8 | 8-16 GB | = Core | 6-12 GB |
| ขนาดกลาง | 10-100 GB | 50-500 | 8-16 | 32-64 GB | 8 | 24-50 GB |
| ขนาดใหญ่ | 100-500 GB | 500-2000 | 16-32 | 128-256 GB | 16 | 100-200 GB |
| Enterprise | >500 GB | >2000 | 32+ (NUMA) | 512 GB+ | 16+ | 400 GB+ (เหลือ OS 10%) |
ข้อมูลนี้มาจากการสังเคราะห์ Microsoft Docs และ Best Practice จริง ปรับตาม Workload: OLTP เน้น Core มาก Memory น้อยกว่า OLAP
กรณีศึกษา: ปัญหาที่พบบ่อยและวิธีแก้
- ปัญหา CPU 100%: จาก MaxDOP=0 ใน Server 96 Core ทำให้ Query เดียวกิน Core ทั้งหมด แก้โดยตั้ง MaxDOP=8 → CPU ใช้งานสมดุล
- ปัญหา Memory Leak: SQL กิน RAM หมด ตั้ง Max Server Memory ไม่ถูก แก้โดยใช้สูตรข้างต้น + Monitor ด้วย Activity Monitor
- สถิติ: Server ที่ตั้ง Max Memory ถูกต้อง ลด Latency ลง 30-50%
สรุป: เลือก CPU Core และ Memory สำหรับ SQL Server อย่างไรให้คุ้มค่า?
ความต้องการจำนวน CPU Core และ Memory สำหรับ SQL Server ขนาดต่างๆ ขึ้นกับขนาดฐานข้อมูลและ Workload โดยยึดขั้นต่ำจาก Microsoft และปรับ MaxDOP/Max Memory ตาม Best Practice เพื่อประสิทธิภาพสูงสุด เริ่มจากประเมินขนาดระบบของคุณ แล้วทดสอบด้วย Tools เช่น Database Engine Tuning Advisor
สนใจ เซิร์ฟเวอร์และบริการ SQL Server ที่ออกแบบมาให้เหมาะสม? ติดต่อทีม 2beshop.com วันนี้เพื่อปรึกษาฟรีและรับโซลูชันที่ปรับแต่งเฉพาะธุรกิจคุณ! แชร์บทความนี้เพื่อช่วยเพื่อนๆ IT ด้วยนะครับ
ติดต่อเราผ่านเว็บไซต์และสอบถามสินค้าได้เลย
- สนใจ Microsoft SQL Server คลิกเลย
- ซื้อสินค้าผ่าน Application รับส่วนลดเพิ่ม คลิกเลย
- LINE: @2beshop
- โทร 02-1186767