āđāļāļĒāļļāļāļāļĩāđāđāļāļāļāļĨāļīāđāļāļāļąāļāļāđāļāļāļāļģāļāļēāļāļĢāļ§āļāđāļĢāđāļ§āđāļĨāļ°āđāļŠāļāļĩāļĒāļĢ Microsoft SQL Database āļāļ·āļāđāļāđāļāļāļēāļāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļāļĩāđāļŦāļĨāļēāļĒāļāļāļāđāļāļĢāđāļĨāļ·āļāļāđāļāđ āđāļāđāļāļąāļāļŦāļēāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļāđāļ āļāļīāļ§āļĢāļĩāļāđāļē āļŦāļĢāļ·āļāļāļēāļĢāđāļāđāļāļĢāļąāļāļĒāļēāļāļĢāļŠāļđāļ āļĄāļąāļāđāļāđāļāļāļļāļāļŠāļĢāļĢāļāđāļŦāļāđ āļŦāļēāļāļāļļāļāļāļģāļĨāļąāļāļĄāļāļāļŦāļēāļ§āļīāļāļĩāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database āļŠāļģāļŦāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļ āļāļāļāļ§āļēāļĄāļāļĩāđāļāļ°āļāļģāđāļŠāļāļāļāļąāđāļāļāļāļāļāļāļīāļāļąāļāļīāļāļĢāļīāļ āļāđāļ§āļĒāđāļŦāđāļāļļāļāļ§āļīāđāļāļĢāļēāļ°āļŦāđ āļāļąāļāļāļēāļĢ āđāļĨāļ°āļāļĢāļąāļāļāļĢāļļāļāļĢāļ°āļāļāđāļŦāđāļāļģāļāļēāļāđāļāđāļāļĩāļāļĩāđāļŠāļļāļ
āļāļģāđāļĄāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database āļŠāļģāļāļąāļāļāđāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļāļļāļ?
Microsoft SQL Database āļŦāļĢāļ·āļ SQL Server āđāļāđāļāļāļēāļāļāđāļāļĄāļđāļĨāđāļāļ relational āļāļĩāđāļĢāļāļāļĢāļąāļ workload āļŦāļāļąāļāļŦāļāđāļ§āļ āđāļāđāļ OLTP (Online Transaction Processing) āđāļĨāļ° decision support āđāļāđāļŦāļēāļāđāļĄāđāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāļĒāđāļēāļāļŠāļĄāđāļģāđāļŠāļĄāļ āļāļēāļāļāļģāđāļāļŠāļđāđ downtime āļĨāļāļāļ§āļēāļĄāļāļķāļāļāļāđāļāļāļāļāļāļđāđāđāļāđ āđāļĨāļ°āļāđāļāļāļļāļāļŠāļđāļāļāļķāđāļ āļŠāļāļīāļāļīāļāļēāļ Microsoft āļāļĩāđāļ§āđāļē āļāļēāļĢ optimize query āļŠāļēāļĄāļēāļĢāļāļĨāļāđāļ§āļĨāļē response āļĨāļāđāļāđāļāļķāļ 50-70% āđāļ workload āļāļąāđāļ§āđāļ
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ SQL Database āļāđāļ§āļĒ:
- āļĨāļ CPU āđāļĨāļ° disk I/O āļāļĩāđāđāļĄāđāļāļģāđāļāđāļ
- āđāļāļīāđāļĄ throughput āļāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļ
- āļāđāļāļāļāļąāļāļāļąāļāļŦāļē deadlocks āđāļĨāļ° bottlenecks
āļŠāļģāļŦāļĢāļąāļāļāļļāļĢāļāļīāļāļāļĩāđāđāļāđāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāļĨāļēāļ§āļāđāļāļĒāđāļēāļ Azure SQL Database āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĩāđāļĒāļīāđāļāļŠāļģāļāļąāļ āđāļāļĢāļēāļ°āļāđāļ§āļĒāļāļ§āļāļāļļāļĄāļāđāļēāđāļāđāļāđāļēāļĒāđāļĨāļ° scalability
āļāļąāđāļāļāļāļāļāļĩāđ 1: āļ§āļīāđāļāļĢāļēāļ°āļŦāđāļāđāļāļĄāļđāļĨāđāļĨāļ°āđāļāļĢāļāļŠāļĢāđāļēāļāļāļēāļāļāđāļāļĄāļđāļĨ (Data Profiling)
āļāđāļāļāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database āļāđāļāļāđāļĢāļīāđāļĄāļāļēāļāļāđāļāļĄāļđāļĨāļāļ·āđāļāļāļēāļ:
- āđāļĨāļ·āļāļ data types āļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄ: āļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļ varchar(max) āļŠāļģāļŦāļĢāļąāļāļāđāļāļĄāļđāļĨāđāļĨāđāļ āđāļāļ·āđāļāļĨāļ storage
- Normalization āđāļĨāļ° Partitioning: āđāļāđāļāļāđāļāļĄāļđāļĨāđāļāđāļ partitions āđāļāļ·āđāļ query āđāļāļāļēāļ°āļŠāđāļ§āļ āļĨāļāđāļ§āļĨāļēāļŠāđāļāļāļāļąāđāļāļāļēāļĢāļēāļ Partitioning āļŠāļēāļĄāļēāļĢāļāđāļĢāđāļ query āđāļāđ 2-5 āđāļāđāļēāđāļāļāļēāļĢāļēāļāđāļŦāļāđ
- āļāļĢāļ§āļāļŠāļāļ relationships: āļāļģāļŦāļāļ foreign keys āđāļĨāļ° constraints āđāļŦāđāļāļąāļāđāļāļ āļāđāļāļāļāļąāļāļāđāļāļĄāļđāļĨāļāļīāļāļāļĨāļēāļ.
āđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļāļ°āļāļģ: āđāļāđ SQL Server Management Studio (SSMS) āļŦāļĢāļ·āļ Query Performance Insight āđāļ Azure āđāļāļ·āđāļ profile data
āļāļąāđāļāļāļāļāļāļĩāđ 2: Optimize Query Performance āđāļ Microsoft SQL Database
āļāļīāļ§āļĢāļĩāļāļ·āļāļŦāļąāļ§āđāļāļāļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ SQL Database āļŠāļģāļŦāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļ āļāļąāļāļŦāļē N+1 query āļŦāļĢāļ·āļ join āđāļĄāđāđāļŦāļĄāļēāļ°āļŠāļĄ āļĄāļąāļāļāļģāđāļŦāđāļĢāļ°āļāļāļāđāļē āļāļĩāđāļāļ·āļāđāļāļāļāļīāļāļŦāļĨāļąāļ:
2.1 āđāļāļĩāļĒāļ Query āđāļŦāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŠāļđāļāļŠāļļāļ
- **āļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļ SELECT *** : āđāļĨāļ·āļāļāđāļāļāļēāļ° columns āļāļĩāđāļāļģāđāļāđāļ āļĨāļ data volume āđāļĨāļ°āđāļāļīāđāļĄāļāļ§āļēāļĄāđāļĢāđāļ§
- āđāļāđ INNER JOIN āđāļāļ OUTER JOIN: INNER JOIN āļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĢāđāļ§āļāļ§āđāļē āđāļāļĒāđāļāļāļēāļ°āļāļēāļĢāļēāļāđāļŦāļāđ
- UNION ALL āđāļāļ UNION: āđāļĄāđāļāđāļāļāđāļāđāļ duplicates āļāļģāđāļŦāđāđāļĢāđāļ§āļāļķāđāļ
- āļĨāļ Subqueries: āđāļāđ CTE (Common Table Expressions) āļŦāļĢāļ·āļ joins āđāļāļ āđāļāļ·āđāļāļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļ memory overhead
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļāļāđāļāļ optimize:
SELECT * FROM Orders o WHERE o.CustomerId IN (SELECT Id FROM Customers WHERE City = 'Bangkok');
āļŦāļĨāļąāļ optimize:
SELECT o.OrderId, o.Date FROM Orders o INNER JOIN Customers c ON o.CustomerId = c.Id WHERE c.City = 'Bangkok';
āļāļĨāļĨāļąāļāļāđ: āļĨāļ execution time āļĨāļ 80%
2.2 āļāļēāļĢāđāļāđ Indexes āļāļĒāđāļēāļāļāļēāļāļāļĨāļēāļ
Indexes āđāļāđāļāļāļļāļāđāļāļŠāļģāļāļąāļāđāļāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļĨāļ°āļāļĢāļąāļāļāļĢāļļāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database:
- āļŠāļĢāđāļēāļ Index āļāļ columns āļāļĩāđ query āļāđāļāļĒ: āđāļāđāļ WHERE, JOIN, ORDER BY
- Reorganize/Rebuild Indexes āđāļāđāļāļāļĢāļ°āļāļģ: āđāļ SQL Server āđāļāđ ALTER INDEX REORGANIZE āļŠāļģāļŦāļĢāļąāļ fragmentation āļāđāļģ āđāļĨāļ° REBUILD āļŠāļģāļŦāļĢāļąāļāļŠāļđāļ
- āļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļ Index āļāļ large fields: āđāļāđāļ text āļĒāļēāļ§ āđāļāđ size limits āđāļāļ
- āđāļāđ Covering Indexes: āļĢāļ§āļĄ columns āļāļĩāđ query āļāđāļāļāļāļēāļĢāļāļąāđāļāļŦāļĄāļāđāļ index āļĨāļ I/O
āļāļģāđāļāļ·āļāļ: Index āļĄāļēāļāđāļāļīāļāđāļāļāļ°āļāļ°āļĨāļ INSERT/UPDATE āļāļ§āļĢāļĨāļ unused indexes āļāđāļ§āļĒ sys.dm_db_index_usage_stats
2.3 Query Caching āđāļĨāļ° Stored Procedures
- Cache āļāļĨāļĨāļąāļāļāđ query āļāđāļāļĒ: āđāļāđ server-side views āļŦāļĢāļ·āļ Redis āļŠāļģāļŦāļĢāļąāļ read-heavy apps āļĨāļ repeated executions
- Stored Procedures: āđāļāļīāđāļĄ reusability, security āđāļĨāļ° performance āđāļāļĢāļēāļ° pre-compiled
- Execution Plans: āđāļāđ EXPLAIN āļŦāļĢāļ·āļ SHOW PLAN āđāļ SSMS āđāļāļ·āđāļāļ§āļīāđāļāļĢāļēāļ°āļŦāđ plan āđāļĨāļ°āļāļĢāļąāļ join order
āļāļąāđāļāļāļāļāļāļĩāđ 3: āļāļąāļāļāļēāļĢāļāļąāļāļŦāļē Deadlocks āđāļĨāļ° Bulk Operations
āđāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļĩāđāļĄāļĩ concurrency āļŠāļđāļ:
- Bulk Updates/Inserts: āđāļāđ BULK INSERT āļŦāļĢāļ·āļ MERGE āđāļāļ loop āļĨāļ locking
- Sequence āļāļēāļĢ Update: āļāļąāļāđāļāļ resources āđāļāļĨāļģāļāļąāļāđāļāļĩāļĒāļ§āļāļąāļ āļāđāļāļāļāļąāļ deadlocks
- Isolation Levels: āļāļĢāļąāļāđāļāđāļ READ COMMITTED SNAPSHOT āđāļāļ·āđāļ balance consistency āđāļĨāļ° speed
āļāļąāđāļāļāļāļāļāļĩāđ 4: Monitoring āđāļĨāļ° Tools āļŠāļģāļŦāļĢāļąāļāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļāđāļāđāļāļ·āđāļāļ
āļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database āđāļĄāđāđāļāđāļāļĢāļąāđāļāđāļāļĩāļĒāļ§ āļāđāļāļ monitor āļŠāļĄāđāļģāđāļŠāļĄāļ:
- Azure Query Performance Insight: āļĢāļ°āļāļļ slow queries āļāļąāļāđāļāļĄāļąāļāļī
- SQL Server Profiler/Extended Events: Track CPU, I/O, duration
- āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļ āļēāļĒāļāļāļ: SolarWinds, Redgate SQL Monitor āļŠāļģāļŦāļĢāļąāļ bottlenecks
- Hardware Optimization: āđāļāđ SSD, RAID 1+0 āđāļĨāļ° high RPM disks
āļāļĢāļāļĩāļĻāļķāļāļĐāļē: āļāļĢāļīāļĐāļąāļāļāđāļēāļāļĨāļĩāļāđāļāđ partitioning + index tuning āļĨāļ query time āļāļēāļ 10 āļ§āļīāļāļēāļāļĩāđāļŦāļĨāļ·āļ 1 āļ§āļīāļāļēāļāļĩ āđāļāļīāđāļĄ user satisfaction 30%
āļāļąāđāļāļāļāļāļāļĩāđ 5: ETL āđāļĨāļ° Parallel Processing āļŠāļģāļŦāļĢāļąāļ Workload āđāļŦāļāđ
āļŠāļģāļŦāļĢāļąāļ data pipeline:
- ETL Optimization: Streamline extract/transform/load āļĨāļ processing time
- Parallel Processing: āđāļāđāļ tasks āđāļāļŦāļĨāļēāļĒ threads āđāļ SQL Server PolyBase
- Batch Processing: āļāļąāļāļāļĨāļļāđāļĄ operations āļĨāļ overhead
āļŠāļĢāļļāļ: āļĒāļāļĢāļ°āļāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāđāļ§āļĒāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database āļāļĩāđāđāļŦāļāļ·āļāļāļąāđāļ
āļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ Microsoft SQL Database āļŠāļģāļŦāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļ āļāļ·āļāļāļĢāļ°āļāļ§āļāļāļēāļĢāļāļĩāđāļĢāļ§āļĄ data profiling, query tuning, indexing, āđāļĨāļ° monitoring āđāļāđāļēāļāđāļ§āļĒāļāļąāļ āļāļĨāļĨāļąāļāļāđāļāļ·āļāļĢāļ°āļāļāļāļĩāđāđāļĢāđāļ§ āđāļĄāđāļāļĒāļģ āđāļĨāļ° scalable āļĨāļāļāđāļāļāļļāļāđāļāđāļāļĢāļīāļ āļŦāļēāļāļāļģāđāļāđāļāđ āļāļļāļāļāļ°āđāļŦāđāļ throughput āđāļāļīāđāļĄāļāļķāđāļāđāļĨāļ° downtime āļĨāļāļĨāļāļāļĒāđāļēāļāļāļąāļāđāļāļ.
āļŠāļāđāļāļāļĢāļīāļāļēāļĢ optimize Microsoft SQL Database? āļāļīāļāļāđāļāļāļĩāļĄāļāļĩāđ 2beshop.com āļ§āļąāļāļāļĩāđāđāļāļ·āđāļ consultation āļāļĢāļĩ āđāļĢāļēāļāļĢāđāļāļĄāļāđāļ§āļĒāļāļļāļĢāļāļīāļāļāļāļāļāļļāļāđāļāļŠāļđāđāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāļŠāļđāļāļŠāļļāļ! āđāļāļĢāđāļāļāļāļ§āļēāļĄāļāļĩāđāļŦāļēāļāđāļāđāļāļāļĢāļ°āđāļĒāļāļāđ
āļāļīāļāļāđāļāđāļĢāļēāļāđāļēāļāđāļ§āđāļāđāļāļāđāđāļĨāļ°āļŠāļāļāļāļēāļĄāļŠāļīāļāļāđāļēāđāļāđāđāļĨāļĒ
- āļŠāļāđāļāļŠāļīāļāļāđāļē Microsoft SQL āļāļĨāļīāļāđāļĨāļĒ
- āļāļ·āđāļāļŠāļīāļāļāđāļēāļāđāļēāļ Application āļĢāļąāļāļŠāđāļ§āļāļĨāļāđāļāļīāđāļĄÂ āļāļĨāļīāļāđāļĨāļĒ
- LINE: @2beshop
- āđāļāļĢ 02-1186767