Breaking News
Loading...
10/10/2013

Performance tuning secret

Execution plan
- Cách đọc implicit convert từ Execution plan?
- Merge join, hash match join, nested loop join

Cách viết Query
- Set nocount on để giảm network round trips.
- Giảm chi phí transaction: ví dụ dùng vòng lặp while để insert vào 1 table, thì bao vòng lặp đó bằng 1 transaction.
- Union all thay vì Union: nếu ko quan tâm duplicate, dùng union all
- Dùng exists thay vì select count(*) vì select count(*) scan entire table, trong khi exists chỉ trả về true/false
- Nếu cần thực thi nhiều sql statement, cân nhắc viết chúng vào 1 transaction, điều này làm giảm số record lưu vào transaction log.
- Khi xem xét 1 câu query, set statistics IO on để xem số lượng logical read, physical read. ta biết được số page đọc từ cache, hay hard disk
http://www.techrepublic.com/blog/datacenter/optimize-sql-server-queries-with-these-advanced-tuning-techniques/179

Dùng Profiler
Làm sao tóm những câu truy vấn có Sort warning event. Thường sql sẽ sort data trên memory, nếu lượng data quá lớn, nó sẽ lưu xuống Tempdb, nếu quá nhiều sort event bị tóm, ta nên thêm ram hoặc tìm cách optimize tempdb

CPU pressure: có thể do các nguyên nhân sau:
- Missing index: chứng minh???

Cấu hình database
để transaction log ở hệ thống đĩa riêng, đọc nhanh. (high speed sequence write) -> tham khảo Accidental dba book)

Các bước để tiến hành tuning khi user bảo poor performance:

1. Kiểm tra có memory pressure hay không
- resource_semaphore
- page life expectancy

2. Kiểm tra có I/0 pressure hay không
- wait stats
- latch_sh...

3. Kiểm ta có câu query nào đang chạy ko, dùng sp_whoisactive

4. Chạy tool Biz của Brent Ozar để check configure ko hợp lệ cho performance, ví dụ: auto shrink=true

Kiểm tra index
- bad index
- missing index

0 comments:

Post a Comment

 
Toggle Footer