Blog

Điều chỉnh hiệu suất trong SQL Server: tìm những truy vấn chậm

Last updated on January 28th, 2026 at 04:54 pm

Điều chỉnh hiệu suất SQL là một trận chiến không bao giờ kết thúc. Bài viết này sẽ cung cấp một số lời khuyên để bạn có thể tìm ra các truy vấn SQL chậm và thực hiện điều chỉnh hiệu suất trong SQL Server.

1. Tìm truy vấn chậm với DMV của SQL

Một trong những tính năng tuyệt vời của SQL Server là chế độ quản lý năng động (Dynamic Management Views – DMVs) được tích hợp sẵn. Các chế độ quản lý năng động này cung cấp nhiều thông tin về các vấn đề khác nhau.

Có một số DMV cung cấp dữ liệu về thống kê truy vấn, kế hoạch thực thi (execution plan), truy vấn gần đây và nhiều thông tin khác nữa. Một số DMV có thể được sử dụng cùng nhau để cung cấp một số thông tin chi tiết quan trọng.

Ví dụ, truy vấn dưới đây được sử dụng để tìm các truy vấn có nhiều lần đọc, viết nhất, thời gian hoạt động (CPU), v.v…

SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,

((CASE qs.statement_end_offset

WHEN -1 THEN DATALENGTH(qt.TEXT)

ELSE qs.statement_end_offset

END – qs.statement_start_offset)/2)+1),

qs.execution_count,

qs.total_logical_reads, qs.last_logical_reads,

qs.total_logical_writes, qs.last_logical_writes,

qs.total_worker_time,

qs.last_worker_time,

qs.total_elapsed_time/1000000 total_elapsed_time_in_S,

qs.last_elapsed_time/1000000 last_elapsed_time_in_S,

qs.last_execution_time,

qp.query_plan

FROM sys.dm_exec_query_stats qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt

CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp

ORDER BY qs.total_logical_reads DESC — logical reads

— ORDER BY qs.total_logical_writes DESC — logical writes

— ORDER BY qs.total_worker_time DESC — CPU time

Kết quả của truy vấn sẽ giống như hình ảnh bên dưới. Bạn có thể thấy rằng truy vấn ở trên cùng chiếm tất cả các tài nguyên.

Từ kết quả này, chúng ta có thể sao chép truy vấn SQL đó và xem xét các biện pháp cải thiện hiệu suất như thêm một chỉ mục v.v…

Ưu điểm: Luôn đưa ra số liệu thống kê tổng hợp.

Nhược điểm: Không cho người dùng biết cái gì đang gọi truy vấn và không thể hình dung khi các truy vấn được gọi theo thời gian.

2. Báo cáo truy vấn qua các giải pháp APM

Một trong những tính năng tuyệt vời của công cụ quản trị hiệu suất ứng dụng (APM) là khả năng theo dõi các truy vấn SQL. Ví dụ, Retrace theo dõi truy vấn SQL qua nhiều nhà cung cấp cơ sở dữ liệu, trong đó có SQL Server.

Retrace có thể cho người dùng biết có bao nhiêu truy vấn đã được thực hiện, thời gian thực hiện truy vấn trung bình và những giao dịch đang gọi truy vấn. Đây thực sự là những thông tin có giá trị để điều chỉnh hiệu suất SQL.

Các giải pháp APM thu thập dữ liệu bằng cách tạo hiệu suất thấp đối với mã ứng dụng khi chạy. Dưới đây là ảnh chụp màn hình từ bảng điều khiển ứng dụng của Retrace, cho thấy một ứng dụng cụ thể có thời gian truy vấn SQL nhiều nhất.

Retrace thu thập các số liệu thống kê hiệu suất về từng truy vấn SQL được thực hiện. Bạn có thể tìm kiếm các truy vấn cụ thể để tìm ra các vấn đề tiềm ẩn.

Bằng cách chọn một truy vấn cụ thể, bạn có thể thấy tần suất truy vấn đó được gọi theo thời gian và thời gian thực hiện truy vấn. Ngoài ra, bạn cũng có thể xem các trang web sử dụng truy vấn SQL và những yếu tốt ảnh hưởng tới hiệu suất.

Tần suất và thời gian thực hiện truy vấn

Vì Retrace là công cụ ghi chép mã và theo dõi các đối tượng request ASP.NET, nó thậm chí có thể cung cấp toàn bộ thông tin về hoạt động của mã.

Hình ảnh dưới đây hiển thị tất cả các truy vấn SQL và các thông tin chi tiết khác về hoạt động của mã. Retrace thậm chí có thể hiển thị thông báo đăng nhập trong cùng một chế độ xem. Ngoài ra, nó còn cho thấy địa chỉ máy chủ, tên cơ sở dữ liệu truy vấn đang được thực hiện và xem có bao nhiêu hồ sơ được trả lại.

3. Cập nhật mới trong việc tìm và xử lý truy vấn chậm trên SQL Server

Trong các phiên bản SQL Server gần đây, việc tối ưu hiệu suất không còn dừng ở việc phân tích từng truy vấn riêng lẻ mà chuyển dần sang cách nhìn theo toàn bộ workload. Thay vì chỉ tập trung vào một câu lệnh SQL chạy chậm tại một thời điểm, SQL Server cho phép theo dõi hành vi truy vấn theo thời gian để phát hiện các mẫu hiệu suất kém lặp lại hoặc các truy vấn suy giảm hiệu năng sau khi hệ thống thay đổi.

Query Store ngày càng đóng vai trò trung tâm trong quá trình này, giúp lưu lại lịch sử thực thi và kế hoạch truy vấn, từ đó dễ dàng so sánh hiệu suất trước và sau các lần deploy, nâng cấp hoặc thay đổi dữ liệu. Cách tiếp cận này đặc biệt hữu ích trong môi trường production, nơi truy vấn có thể chạy nhanh trong giai đoạn đầu nhưng chậm dần khi dữ liệu và tải hệ thống tăng lên.

Xu hướng hiện nay cho thấy việc tìm truy vấn chậm hiệu quả không chỉ dựa vào công cụ, mà cần kết hợp theo dõi dài hạn, phân tích xu hướng và đánh giá tác động ở mức hệ thống, thay vì xử lý từng vấn đề riêng lẻ.

INDA Academy tự hào là đơn vị tiên phong trong việc đào tạo phân tích dữ liệu và AI chuyên sâu, đặc biệt cho khối ngành Ngân hàng – Tài chính – Bảo hiểm tại Việt Nam. Sau hơn 12 năm “thực chiến” cùng những dòng chảy dữ liệu khổng lồ, chúng tôi đã xây dựng nên một hệ sinh thái đào tạo toàn diện, giúp hàng nghìn học viên chuyển mình từ người mới bắt đầu trở thành những chuyên gia lành nghề, sẵn sàng đáp ứng tiêu chuẩn khắt khe của các doanh nghiệp lớn.

Điểm khác biệt lớn nhất tại INDA chính là triết lý đào tạo dựa trên các dự án thực tế (Project-based) và lộ trình cá nhân hóa nhờ ứng dụng AI. Chúng tôi không chỉ dạy bạn cách sử dụng công cụ, mà còn truyền tải tư duy khai phá giá trị từ dữ liệu để đưa ra quyết định kinh doanh chính xác.

Tìm hiểu thêm về các khóa học TẠI ĐÂY:
Môn học SQL
Lộ trình đào tạo Data Engineer
Lộ trình đào tạo Data Analyst
Lộ trình đào tạo Tester
Khóa học Data Engineer nâng cao – Thực chiến 5 dự án doanh nghiệp
Khóa học Data Analyst nâng cao – Thực chiến 5 dự án doanh nghiệp

    Leave a Reply

    Your email address will not be published. Required fields are marked *