āļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢāļˆāļģāļ™āļ§āļ™ 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 (āđāļĨāļ°āļĢāļļāđˆāļ™āđƒāļŦāļĄāđˆāļāļ§āđˆāļē) āļ”āļąāļ‡āļ™āļĩāđ‰:

āļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļšāļ‚āļąāđ‰āļ™āļ•āđˆāļģāđāļ™āļ°āļ™āļģ
MemoryExpress: 512 MB
āļ­āļ·āđˆāļ™āđ†: 1 GB
Express: 1 GB
āļ­āļ·āđˆāļ™āđ†: āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 4 GB (āđ€āļžāļīāđˆāļĄāļ•āļēāļĄāļ‚āļ™āļēāļ”āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ)
CPUx64 Processor, 1.4 GHz (āļŠāļđāļ‡āļŠāļļāļ” 64 Core āļ•āđˆāļ­ NUMA Node)2.0 GHz āļŦāļĢāļ·āļ­æ›īåŋŦ
Storage6 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 NodeCore CPU āļ•āđˆāļ­ NodeMaxDOP āđāļ™āļ°āļ™āļģ
1 Nodeâ‰Ī8āđ€āļ—āđˆāļēāļˆāļģāļ™āļ§āļ™ Core
1 Node>88
āļŦāļĨāļēāļĒ Nodeâ‰Ī16āđ€āļ—āđˆāļēāļˆāļģāļ™āļ§āļ™ Core
āļŦāļĨāļēāļĒ Node>1616

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļˆāļĢāļīāļ‡: 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 āđāļ™āļ°āļ™āļģMaxDOPMax Server Memory
āļ‚āļ™āļēāļ”āđ€āļĨāđ‡āļ<10 GB<504-88-16 GB= Core6-12 GB
āļ‚āļ™āļēāļ”āļāļĨāļēāļ‡10-100 GB50-5008-1632-64 GB824-50 GB
āļ‚āļ™āļēāļ”āđƒāļŦāļāđˆ100-500 GB500-200016-32128-256 GB16100-200 GB
Enterprise>500 GB>200032+ (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 āļ”āđ‰āļ§āļĒāļ™āļ°āļ„āļĢāļąāļš

āļ•āļīāļ”āļ•āđˆāļ­āđ€āļĢāļēāļœāđˆāļēāļ™āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāđāļĨāļ°āļŠāļ­āļšāļ–āļēāļĄāļŠāļīāļ™āļ„āđ‰āļēāđ„āļ”āđ‰āđ€āļĨāļĒ

By admin