Performance Tuning Trong Microsoft SQL Server với SQL Server Management Studio
Bài đăng này đã không được cập nhật trong 4 năm
Cải thiện tốc độ luôn là vấn đề nhức nhối của các dự án cỡ vừa và lớn, và phần lớn nguyên nhân dẫn đến sự chậm trễ này là do những trục trặc ở khâu truy xuất dữ liệu từ database. Hôm nay chúng ta sẽ cùng nhau tìm hiểu các phương pháp để tìm kiếm nguyên nhân và cải thiện tốc độ trong hệ quản trị cơ sở dữ liệu Microsoft SQL Server (gọi tắt là SQL Server) bằng công cụ SQL Server Management Studio (viết tắt là SSMS).
SQL Server
SQL Server là hệ quản trị cơ sở dữ liệu (Database Management System - DBMS) được phát triển bởi Microsoft, để lưu trữ và quản lý dữ liệu. Ngoài ra nó còn cung cấp các công cụ tiện ích khác như report writing, data import/export, và data analysis.
SQL Server Management Studio
SSMS là một môi trường phát triển nâng cao, cho phép chúng ta config và quản lý DBMS. SSMS bao gồm nhiều công cụ để thao tác với SQL Server.
Các công cụ để tuning DB
-
Execution Plan
Bước đầu tiên để hiểu và phân tích một câu query là nhìn vào execution plan của nó. Execution plan là một dạng sơ đồ biểu thị các hoạt động được thực hiện bởi database engine khi chạy một câu query. Để bật chế độ thực thi query có đính kèm execution plan, các bạn có thể làm theo một trong các cách dưới đây
Cách 1 Click chọn icon
Include Actual Execution Plan
như hình dướiCách 2 Ấn tổ hợp
Ctrl + M
trong giao diện SSMSCách 3 Chọn
Query -> Include Actual Execution Plan
Sau chỉ bật thì execution plan sẽ hiển thị ra cùng với kết quả của câu query ở tab
Excution plan
như hình dướiCác bạn có thể di chuột vào từng item của plan để xem thông tin chi tiết
execution plan cho ta biết các loại object mà query dùng (table, index, v.v...) và chúng đươc dùng như thế nào (thứ tự các object được gọi, cách chúng được gọi - seek hay scan, loại join, v.v...). Dựa vào đó chúng ta có thể phân tích được đâu là nguyên nhân (hoặc bộ phận nào của câu query) gây ra vấn đề perfomance.
-
Activity Monitor
Các xử lý chậm và mất thời gian trên database thường ngốn nhiều processor, memory và disk. Vậy nên ta có thể dựa vào đó để phát hiện những câu query cần cải thiện tốc độ. Để mở activity monitor, các bạn có thể click vào icon
activity monitor
như hình dướiNhững query(đã thực hiện trong thời gian gần) ngốn nhiều tài nguyên và thời gian thực hiện sẽ được hiển thị trong mục
Recent Expensive Queries
Các bạn có thể nhấp chuột phải vào một dòng nào đó và chọn
Show Execution Plan
để xem chi tiết thực thi của query đóNgoài ra activity monitor còn rất nhiều thông tin hữu ích khác hỗ trợ việc theo dõi và quản lý hoạt động của db. Mình sẽ đi chi tiết hơn về mục này trong một bài viết khác.
-
Dynamic Management View
Dynamic Management View (DMV) là các view và function được tạo sẵn trong SQL Server. Các view và function này trả về thông tin của database server, giúp đỡ việc theo dõi tình trạng server, chuẩn đoán sự cố và cải thiện performance
Tài liệu tham khảo trên trang chủ của Microsoft doc:
Chi tiết về cách dùng DMV để xem các thống kê về perfomance
Danh sách các DMV có sẵn trong SQL Server -
Database Engine Tuning Advisor
Database Engine Tuning Advisor(DETA) là tool dùng để phân tích một hoặc nhiều câu lệnh sql, sau đó đưa ra gợi ý về hướng cải thiện performance (thêm index, thêm partitioning) để tiến hành phân tích một (hoặc nhiều) query, chúng ta lựa chọn câu query đó, chuột phải, rồi chọn
Analyze Query in Database Engine Tuning Advisor
sau đó màn hình đăng nhập sẽ hiện ra, điền thông tin đăng nhập rồi chọnConnect
để tiếp tục. Giao diện của DETA sẽ được hiển thị như hình dưới bạn có thể chọnStart Analysis
trên toolbar để bắt đầu phân tích, hoặc thay đổi các option theo ý mình ở 2 tabGeneral
vàTuning Options
rồi bấmStart Analysis
.Sau khi phân tích thành công, nếu DETA có hướng cải thiện thì nội dung sẽ được hiển thị ở tab
Recommendations
, còn báo cáo chi tiết về phân tích sẽ được hiển thị ở tabReports
.Trên đây là một vài phương pháp để theo dõi, phân tích, và tìm ra hướng cải thiện tốc độ cho query của SQL Server bằng SQL Server Management Studio. Bài viết tiếp theo mình sẽ đi sâu hơn về các tips và tricks có thể dùng để cải thiện performance.
All rights reserved