āļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļāļģāļāļ§āļ 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