CÔNG NGHỆ THÔNG TIN >> BÀI VIẾT CHỌN LỌC

Luồng xử lý câu lệnh T-SQL trong SQL Server

Đăng lúc: 09:32 AM - 04/01/2024 bởi Charles Chung - 388

Trong bài viết này tôi sẽ phân tích luồng xử lý câu lệnh T-SQL trong SQL Server, giúp các bạn có thể hiểu và tối ưu câu truy vấn trong các tình huống khác nhau.

Giới thiệu

Quá trình xử lý của SQL Server dựa trên việc thực thi truy vấn và hầu hết các vấn đề về hiệu suất đều liên quan đến các truy vấn được thực thi đối với SQL Server. Hình bên dưới thể hiện luồng thực hiện truy vấn được đơn giản hóa đến một mức nhất định để dễ hiểu hơn về các bước cơ bản trong quá trình thực hiện truy vấn. Mọi thực thi truy vấn đều bắt đầu bằng câu lệnh T-SQL thực tế và khi người dùng chạy câu lệnh, nó sẽ trải qua các bước thực thi như được trình bày chi tiết bên dưới:

Mô tả chi tiết các bước

  1. Statement: người dùng đã được xác thực và gửi câu lệnh T-SQL tới SQL Server
  2. Parser: SQL Server sẽ tiến hành phân tích bao gồm:
    • Syntax check: Kiểm tra cú pháp câu lệnh T-SQL, nếu sai thông báo lỗi, nếu đúng đi tiếp bước Semantic
    • Semantic check: Kiểm tra ngữ nghĩa câu lệnh T-SQL nếu sai báo lỗi, nếu đúng qua bước tiếp theo
  3. Algebrizer: Sau khi công cụ phân tích cú pháp xác minh câu lệnh T-SQL là hợp lệ, nó sẽ chuyển câu lệnh đó tới algebrizer. Algebrizer thực hiện các nhiệm vụ sau:
    • Xác minh rằng các tên đối tượng và cột được cung cấp trong truy vấn hoặc được truy vấn tham chiếu tồn tại trong cơ sở dữ liệu đích. Nếu một đối tượng được tham chiếu trong tập lệnh T-SQL không tồn tại trong cơ sở dữ liệu, algebrizer sẽ trả về thông tin lỗi thích hợp. 
    • Kiểm tra và xác nhận rằng các cột trong câu lệnh GROUP BY được đặt đúng vị trí. Nếu không, algebrizer sẽ trả về lỗi.
    • Nếu xác minh và kiểm tra đều đúng algebrizer chuyển qua kiểm tra xem câu lệnh T-SQL đã có Execute Plan trong Cached chưa, nếu có thì chuyển qua bước Execution và trả kết quả cho người dùng, nếu chưa có thì chuyển qua bước Optimization
  4. Optimazation: là trình tối ưu hóa truy vấn thực hiện tối ưu hóa đầy đủ dựa trên chi phí với sự trợ giúp của số liệu thống kê. Dựa trên những thông tin đầu vào đó, nó sẽ chuẩn bị kế hoạch thực thi SQL Server (Execution Plan) được tối ưu hóa về mặt chi phí.
  5. Execution: thực thi câu T-SQL đã được chuẩn bị trong Execution Plan và trả kết quả cho người dùng.

Một vài ví dụ

1. Ví dụ Syntax check

SELECT * FORM Books

Msg 102, Level 15, State 1, Line 2

Incorrect syntax near 'FORM'.

2. Ví dụ Semantic check

SELECT * FROM Book

Msg 208, Level 16, State 1, Line 2

Invalid object name 'Book'.

3. Ví dụ Algebrizer

SELECT CategoryId, Author, count(*) FROM Books

group by CategoryId

Msg 8120, Level 16, State 1, Line 2

Column 'Books.Author' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

 

Kết luận: Như vậy là các bạn đã hiểu rõ các giai đoạn xử lý câu T-SQL trong SQL Server, các bạn có thể tham khảo thêm bài Thứ tự thực hiện câu lệnh Select trong SQL Server để hiểu thêm nhé

 

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ