āđƒāļ™āļĒāļļāļ„āļ—āļĩāđˆāđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļ•āđ‰āļ­āļ‡āļ—āļģāļ‡āļēāļ™āļĢāļ§āļ”āđ€āļĢāđ‡āļ§āđāļĨāļ°āđ€āļŠāļ–āļĩāļĒāļĢ 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 āļŸāļĢāļĩ āđ€āļĢāļēāļžāļĢāđ‰āļ­āļĄāļŠāđˆāļ§āļĒāļ˜āļļāļĢāļāļīāļˆāļ‚āļ­āļ‡āļ„āļļāļ“āđ„āļ›āļŠāļđāđˆāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļŠāļļāļ”! āđāļŠāļĢāđŒāļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļŦāļēāļāđ€āļ›āđ‡āļ™āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ

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

By admin

You missed