Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kế hoạch thực thi SQL Server - nó là gì và nó giúp giải quyết các vấn đề về hiệu suất như thế nào?

Kế hoạch thực thi SQL Server hữu ích để điều tra các vấn đề về hiệu suất với các truy vấn của bạn. Các chuyên gia cơ sở dữ liệu thường nhận được các phiếu báo sự cố hoặc phàn nàn của người dùng rằng các truy vấn chạy chậm. Kết quả truy vấn trước đây thường mất hai hoặc ba phút đột nhiên yêu cầu hơn 30 phút. Khắc phục sự cố có thể yêu cầu các khu vực điều tra như tài nguyên máy chủ (CPU, bộ nhớ), thống kê, hiệu suất đĩa, chặn, bế tắc và chỉ mục. Trong bài viết này, chúng tôi sẽ tập trung vào vai trò của kế hoạch thực thi SQL Server trong việc giải quyết các vấn đề về hiệu suất.

Điều gì xảy ra khi bạn gửi T-SQL trong SQL Server?

Hãy xem điều gì sẽ xảy ra khi bạn gửi truy vấn bằng Transact-SQL hoặc T-SQL trong SQL Server. Đối với người dùng, tất nhiên, nó không có gì khác biệt. Người dùng mong đợi nhận được kết quả chính xác nhanh chóng, cho dù truy vấn cơ sở dữ liệu hay tìm kiếm trên web.

Dòng công việc cấp cao của truy vấn SQL

  1. Người dùng xác thực với SQL Server trong ứng dụng khách và gửi truy vấn.
  2. Máy chủ SQL phân tích cú pháp truy vấn và kiểm tra bất kỳ lỗi cú pháp nào.
  3. Cây phân tích cú pháp được xử lý thêm trong Algebrizer, phân giải tất cả các đối tượng, bảng và cột trong truy vấn. Nó cũng thực hiện kiểm tra các kiểu dữ liệu cột. Trong trường hợp có bất kỳ sự cố nào, nó sẽ trả về một lỗi. Algebrizer tạo cây quy trình truy vấn và băm truy vấn. Nếu kế hoạch thực thi đã tồn tại, SQL Server sẽ sử dụng kế hoạch được lưu trong bộ nhớ cache đó và thực hiện truy vấn.
  4. Nếu không có kế hoạch nào tồn tại hoặc kế hoạch đã lỗi thời, Trình tối ưu hoá Truy vấn thực hiện tối ưu hoá dựa trên chi phí đầy đủ với sự trợ giúp của thống kê, cây quy trình truy vấn và các ràng buộc. Dựa trên những đầu vào đó, nó chuẩn bị kế hoạch thực thi SQL Server được tối ưu hóa về chi phí.
  5. Cuối cùng, công cụ truy vấn SQL Server thực hiện truy vấn theo kế hoạch thực thi và trả về kết quả.

Tổng quan về kế hoạch thực thi SQL Server

Kế hoạch thực thi SQL Server giúp các chuyên gia cơ sở dữ liệu khắc phục sự cố hiệu suất truy vấn và viết các truy vấn hiệu quả. Khi một truy vấn mất nhiều thời gian để chạy, kế hoạch thực thi SQL Server có thể giúp bạn xác định thời điểm mà tại đó truy vấn đang sử dụng nhiều tài nguyên và thời gian nhất.

Bạn có thể sử dụng bất kỳ cách nào sau đây để tạo kế hoạch thực thi:

  1. SQL Server Management Studio
  2. Azure Data Studio
  3. Trình biên dịch SQL Server
  4. Sự kiện mở rộng
  5. Chế độ xem quản lý động
  6. Phần mềm giám sát cơ sở dữ liệu của bên thứ ba

Các kế hoạch thực thi được tạo bởi # 1 đến # 5 cũng tương tự như vậy. Phần mềm giám sát cơ sở dữ liệu của bên thứ ba (# 6) cung cấp các chức năng bổ sung sử dụng mã màu để xác định các nhà khai thác tốn kém.

SQL Server cung cấp các kế hoạch thực thi ước tính và thực tế, tương tự như những gì bạn gặp phải khi cần sửa chữa ô tô của mình. Một thợ cơ khí sẽ kiểm tra xe của bạn, sau đó bạn sẽ nhận được bản ước tính công việc dựa trên yêu cầu của bạn, tình trạng xe cũng như thời gian và vật liệu gần đúng mà thợ cơ khí nghĩ rằng việc sửa chữa sẽ thực hiện. Tất nhiên, chi phí và thời gian thực tế có thể khác nhau, giống như với các kế hoạch thực thi SQL Server ước tính và thực tế.

Kế hoạch thực hiện ước tính

Nếu không thực hiện truy vấn, bạn có thể nhận được kế hoạch thực thi SQL Server ước tính (hợp lý) dựa trên số liệu thống kê của SQL Server. Trong SQL Server Management Studio (SSMS), hãy làm theo các bước sau:

  1. Đánh dấu truy vấn (trong trường hợp bạn muốn có kế hoạch thực thi cho một truy vấn cụ thể).
  2. Nhấp vào nút Hiển thị Kế hoạch Thực thi Ước tính (phím tắt Ctrl + L), như được hiển thị bên dưới.

Đôi khi SQL Server không thể tạo ra một kế hoạch ước tính; ví dụ:nếu một tham số được sử dụng mà không chỉ định giá trị của nó trong truy vấn hoặc nếu một bảng tạm thời không được khai báo.

Kế hoạch thực hiện thực tế

Khi bạn gửi truy vấn đến SQL Server, bạn có thể nhận được một kế hoạch thực thi thực tế đại diện cho các bước mà SQL Server đã thực hiện để thực thi truy vấn. Như trong tình huống sửa chữa xe, đây giống như hóa đơn thực tế mà bạn nhận được.

Để có được kế hoạch thực thi thực tế, hãy làm theo các bước bên dưới trong SSMS trước khi chạy truy vấn.

  1. Đánh dấu truy vấn.
  2. Nhấp vào Hiển thị Kế hoạch Thực thi Thực tế nút (phím tắt Ctrl + M ), như được hiển thị ở trên.

Định dạng kế hoạch thực thi SQL Server

Theo mặc định, các thủ tục SSMS được giải thích ở trên tạo ra một kế hoạch thực thi SQL Server ở định dạng đồ họa. Nhưng bạn có tùy chọn xem kế hoạch thực hiện ở ba định dạng khác nhau:

  1. Đồ họa
  2. XML
  3. Văn bản

Hãy xem xét từng định dạng đó.

1. Kế hoạch thực thi đồ họa

Sơ đồ đồ họa mô tả tất cả các thành phần, bao gồm cả luồng dữ liệu, như được hiển thị bên dưới.

Người điều hành

Các toán tử được hiển thị dưới dạng biểu tượng. Mỗi nhà điều hành được chỉ định để thực hiện một nhiệm vụ cụ thể. Ví dụ:trình tối ưu hóa truy vấn trong SQL Server có thể thực hiện quét bảng, quét chỉ mục và tìm kiếm. Đây là cách toán tử tìm kiếm chỉ mục theo cụm trông như thế nào khi nó lấy dữ liệu từ một chỉ mục trên bảng [AdventureWorks2019]. [HumanResources]:

Phần trăm chi phí

Kế hoạch đồ họa cũng hiển thị chi phí phần trăm - ở đây, 99% cho tìm kiếm chỉ mục theo nhóm - được liên kết với toán tử. Chi phí đó tương đối so với các toán tử khác được sử dụng để thực hiện truy vấn.

Mũi tên luồng dữ liệu

Các mũi tên kết nối các toán tử, chiều rộng của chúng phản ánh số hàng dữ liệu di chuyển từ toán tử này sang toán tử tiếp theo.

Ví dụ:giả sử truy vấn của bạn chỉ tạo một hàng đầu ra nhưng mất nhiều thời gian để hoàn thành. Di chuyển chuột đến mũi tên luồng dữ liệu trong kế hoạch thực thi, bạn thấy rằng số hàng được đọc là hàng triệu. Điều đó thể hiện sự mất cân đối lớn trong việc sử dụng tài nguyên và cho thấy một khu vực cần được tối ưu hóa.

Chú giải công cụ

Như được hiển thị bên dưới, khi bạn di chuột qua một toán tử, các chú giải công cụ sẽ xuất hiện với nhiều thống kê hơn về luồng dữ liệu.

Cửa sổ thuộc tính

Cửa sổ Thuộc tính hiển thị thông tin chi tiết về các toán tử và các thành phần của chúng. Đây là tập hợp các chú giải công cụ.

2. Kế hoạch thực thi SQL Server được định dạng XML

Kế hoạch thực thi XML ở một định dạng có cấu trúc, cụ thể. Mặc dù định dạng XML ít trực quan hơn, nhưng nó chứa tất cả các chi tiết trong XML và không yêu cầu các bước bổ sung để xem các thuộc tính và chú giải công cụ. Bạn có thể dễ dàng chuyển đổi định dạng XML sang định dạng đồ họa và ngược lại.

Để chuyển đổi một kế hoạch thực thi đồ họa sang định dạng XML, hãy nhấp chuột phải vào nó và chọn Hiển thị XML kế hoạch thực thi , như hình dưới đây.

Kết quả là kế hoạch thực thi có cấu trúc, định dạng XML sau đây.

Các lệnh sau cũng tạo kế hoạch thực thi ở định dạng XML:

  • Đối với gói ước tính:BẬT SHOWPLAN_XML
  • Đối với gói thực tế:BẬT STATISTICS_XML

3. Kế hoạch thực thi SQL Server định dạng văn bản

Bạn có thể tạo kế hoạch thực hiện theo một số cách:

  • ĐẶT SHOWPLAN_TEXT BẬT

Lệnh này tạo ước tính kế hoạch thực thi, không có thông tin chi tiết về việc thực hiện truy vấn. Nó dành cho các ứng dụng như tiện ích sqlcmd.

  • ĐẶT SHOWPLAN_ALL BẬT

Lệnh này tạo ước tính kế hoạch thực hiện, với thông tin chi tiết về tất cả các toán tử và hoạt động ở định dạng bảng.

  • ĐẶT HỒ SƠ THỐNG KÊ

Lệnh này tạo một kế hoạch thực thi thực tế, sau khi thực hiện truy vấn, ở định dạng bảng.

Tại sao kế hoạch thực thi SQL Server ước tính và thực tế lại khác nhau?

Kế hoạch thực hiện ước tính và thực tế nhìn chung tương tự nhau, mặc dù một số trường hợp có thể khiến chúng khác nhau.

Thống kê cũ

Lý do chính cho sự khác biệt giữa kế hoạch thực hiện ước tính và thực tế là số liệu thống kê cũ.

Trình tối ưu hóa truy vấn sử dụng số liệu thống kê để xây dựng kế hoạch thực thi truy vấn được tối ưu hóa và tiết kiệm chi phí. Nếu thống kê của bạn không được cập nhật hoặc nếu lấy mẫu dữ liệu của bạn không phù hợp, trình tối ưu hóa truy vấn sẽ thực hiện tối ưu hóa toàn bộ và xây dựng kế hoạch thực thi dựa trên thông tin cũ. Bạn cũng có thể nhận được một kế hoạch thực thi không hiệu quả có thể dẫn đến các vấn đề về hiệu suất truy vấn.

Thống kê cũ đôi khi xảy ra khi dữ liệu thay đổi thường xuyên và số liệu thống kê không được cập nhật theo duy trì chỉ mục.

Kế hoạch thực thi SQL Server nối tiếp hoặc song song

Tại thời điểm biên dịch, trình tối ưu hóa truy vấn xây dựng một kế hoạch thực thi và tạo ra một kế hoạch nối tiếp hoặc song song tùy thuộc vào chi phí truy vấn và ngưỡng chi phí của tính song song. Mặc dù kế hoạch thực thi có thể giống nhau đối với cả chế độ nối tiếp và song song, SQL Server quyết định giữa chúng dựa trên hoạt động và tài nguyên máy chủ.

Ước tính không hợp lệ

Như đã đề cập trước đó, Algebrizer liên kết tên của các đối tượng trước khi thực hiện truy vấn SQL. Giả sử bạn chỉ định rằng một bảng có tên kiểm tra sẽ được CREATEd trong thời gian chạy, sau đó cố gắng tạo một kế hoạch thực thi ước tính. Vì bảng đó không tồn tại, bạn sẽ nhận được thông báo lỗi, như được hiển thị bên dưới.

Sử dụng kế hoạch thực thi

Tóm lại, bạn có thể tạo một kế hoạch thực thi SQL Server ở các định dạng đồ họa, XML và văn bản và sử dụng nó để giúp bạn giải quyết các vấn đề về hiệu suất cơ sở dữ liệu của mình.

Kế hoạch thực thi truy vấn là các bước chính trong việc xác định quy trình truy vấn, toán tử và thành phần để bạn có thể điều chỉnh các truy vấn của mình để có bất kỳ cải tiến nào có thể xảy ra. Để biết thêm thông tin về việc sử dụng các kế hoạch thực thi, hãy xem bài đăng của chúng tôi:Cách Đọc và Phân tích Kế hoạch Thực thi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo Ràng buộc Kiểm tra trên Nhiều Cột trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 84

  2. SQL Server:Cơ sở dữ liệu bị kẹt ở trạng thái Khôi phục

  3. Khôi phục cơ sở dữ liệu từ chế độ khẩn cấp trong SQL Server

  4. CONVERT () trong SQL Server

  5. VMware CPU Hot Plug vNUMA Hiệu ứng trên SQL Server