Các kế hoạch thực thi truy vấn SQL được tạo khi trình tối ưu hóa truy vấn xác định cách hiệu quả nhất để cung cấp dữ liệu theo yêu cầu của truy vấn. Các kế hoạch này là bản trình bày các hoạt động cơ sở dữ liệu mà một truy vấn đang chạy, hiển thị các đối tượng mà truy vấn sử dụng, các kiểu sử dụng và cách chúng đang được sử dụng.
Kiến thức phổ biến rằng các truy vấn hoạt động kém là một chỉ báo chính cho thấy có điều gì đó không ổn trong cơ sở dữ liệu. Vì vậy, xem xét "sơ bộ" kế hoạch thực thi của truy vấn là một trong những cách tốt nhất để xác định nguyên nhân của vấn đề hiệu suất.
Thông tin có sẵn trong kế hoạch thực thi SQL là vô giá đối với các DBA khắc phục sự cố hiệu suất truy vấn SQL Server vì nó cho phép họ tìm ra nguyên nhân gốc rễ của vấn đề và điều chỉnh truy vấn nếu cần.
Kiểm tra kế hoạch thực thi SQL là một trong những bước đầu tiên trong việc điều chỉnh hiệu suất bởi vì kế hoạch này nêu rõ các nguồn có khả năng xảy ra sự cố nhất trong một truy vấn, bao gồm các toán tử đắt tiền, một số lượng bản ghi bất thường giữa các toán tử và các toán tử bổ sung.
DBA cũng được hưởng lợi từ các cảnh báo về kế hoạch thực thi cảnh báo người dùng về các vấn đề như tràn tempdb và thiếu chỉ mục.
Các loại kế hoạch thực thi SQL
Có hai loại kế hoạch thực thi SQL chính:kế hoạch thực thi ước tính và kế hoạch ước tính thực tế.
Các kế hoạch thực hiện ước tính được mô tả tốt nhất như một loại dự báo thời tiết. Như tên của nó, các kế hoạch thực thi ước tính sử dụng các tính toán, thống kê gần đúng và các tham số khác để ước tính các bước có thể được SQL Server Engine tuân theo để thực thi truy vấn đã gửi sau khi phân tích cú pháp truy vấn.
Bạn không cần phải thực thi truy vấn để tạo loại kế hoạch thực thi này, vì vậy sẽ rất tốt cho các truy vấn phức tạp mà việc tạo kế hoạch thực thi thực tế sẽ mất nhiều thời gian.
Các kế hoạch thực thi thực tế thực hiện truy vấn đã gửi và sau đó hiển thị các bước đã xảy ra trong quá trình thực thi. Loại kế hoạch này hiển thị các tính toán thực và các bước thực tế (không ước tính) theo sau của SQL Server Engine.
Bởi vì loại kế hoạch thực thi này thực sự chạy truy vấn, nó là một lựa chọn tốt để khắc phục sự cố về hiệu suất truy vấn.
Cách tạo kế hoạch thực thi SQL
Hackernoon cung cấp một mô tả ngắn gọn về cách tạo các kế hoạch thực thi ước tính và thực tế. Quá trình này có thể được tóm tắt theo các bước sau:
Tạo một kế hoạch thực hiện ước tính
- Đi tới cơ sở dữ liệu
- Đánh dấu truy vấn
- Nhấp vào “Truy vấn”
- Nhấp vào “Hiển thị kế hoạch thực hiện ước tính” hoặc sử dụng phím tắt Ctrl + L
Tạo một kế hoạch thực hiện thực tế
- Đi tới cơ sở dữ liệu
- Đánh dấu truy vấn
- Nhấp vào “Truy vấn”
- Nhấp vào “Bao gồm kế hoạch thực thi thực tế” hoặc sử dụng phím tắt Ctrl + M
Bạn sẽ tìm thấy giải thích chi tiết về cách tạo kế hoạch thực hiện ước tính và kế hoạch thực hiện thực tế trong tài liệu chính thức của Microsoft.
Tại sao kế hoạch thực thi SQL ước tính và thực tế có thể khác nhau
Nói chung, kế hoạch thực hiện ước tính và thực tế sẽ tương tự nhau. Tuy nhiên, có những dịp chúng khác nhau. Điều này là bình thường và xảy ra bởi vì số liệu thống kê cơ sở dữ liệu và dữ liệu thực tế là khác nhau. Những khác biệt này có thể được giới thiệu qua một số kênh:
Song song
Chi phí kế hoạch có thể tạo ra hai kế hoạch thực thi cho một truy vấn đã gửi. SQL Server Engine sẽ chọn có sử dụng kế hoạch song song hay không, vì vậy có thể cho một kế hoạch sử dụng kế hoạch song song và kế hoạch kia sử dụng kế hoạch nối tiếp.
Thống kê cũ
Khi bạn chèn dữ liệu vào và xóa dữ liệu khỏi bảng và chỉ mục hoặc thay đổi bảng hoặc lược đồ chỉ mục, thống kê sẽ thay đổi. Nếu thống kê không được cập nhật thường xuyên, kế hoạch thực hiện thực tế sẽ khác với kế hoạch thực hiện ước tính.
Gói ước tính không hợp lệ
Nếu truy vấn chứa câu lệnh yêu cầu bảng tạm thời chỉ tồn tại nếu truy vấn được thực thi, việc tạo kế hoạch thực thi ước tính sẽ tạo ra lỗi vì không có truy vấn nào được thực hiện. Truy vấn tương tự sẽ chạy tốt trong kế hoạch thực thi thực tế vì truy vấn đã được thực thi.
Các kế hoạch thực thi SQL là một tài nguyên có giá trị để khắc phục các sự cố về hiệu suất của SQL Server. Biết cách tạo cả kế hoạch thực thi SQL ước tính và thực tế là một công cụ cần thiết cho bất kỳ DBA nào được giao nhiệm vụ điều chỉnh các truy vấn để có hiệu suất tối ưu.