Tải bản đầy đủ (.pdf) (5 trang)

Những thói quen tốt khi viết câu lệnh T-SQL- P7 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (324.28 KB, 5 trang )

thủ tục cùng lúc không? Khoảng trống các sơ đồ lưu
cache sử dụng là bao nhiêu? Trên đây là một số câu
hỏi bạn cần trả lời để chắc rằng bạn đã tối ưu hóa
cache thủ tục và giảm thiểu số lượng sơ đồ lưu cache
mà ứng dụng tạo ra. Có một vài vấn đề nhỏ trong
cách viết câu lệnh T-SQL của bạn là nguyên nhân
khiến máy chủ SQL phải thực hiện thêm nhiều việc
để biên dịch và lưu cache các sơ đồ thực thi cho cùng
một đoạn code.
Trước khi máy chủ SQL có thể tiến hành xử lý đoạn
code T-SQL, nó cần tạo một bản sơ đồ thực thi. Để
tạo bản sơ đồ thực thi, trước tiên máy chủ SQL phải
tiêu tốn những nguồn tài nguyên giá trị như CPU
nhằm biên dịch code T-SQL. Khi sơ đồ được tạo
xong, nó sẽ được lưu cache để có thể tái sử dụng khi
ứng dụng gọi cùng một câu lệnh T-SQL nhiều hơn
một lần. Bạn có thể cải thiện hiệu suất máy chủ SQL
nếu bạn viết câu lệnh T-SQL để tăng cường tái sử
dụng sơ đồ lưu cache với những đoạn T-SQL thường
xuyên được thực thi.
Với sự xuất hiện của SQL Server 2005, Microsoft
cung cấp các DMV (Dynamic Management Views -
Cửa sổ quản lý động) cho phép bạn khám phá các sơ
đồ lưu. Bằng cách sử dụng các DMV, bạn có thể tìm
hiểu được nhiều điều về các sơ đồ lưu cache. Sau đây
là danh sách tóm tắt những thứ bạn có thể nhận biết:
 Các đoạn text liên quan tới sơ đồ lưu cache
 Số lần sơ đồ lưu cache được thực thi
 Kích cỡ sơ đồ lưu cache
Ở đoạn sau của bài viết, tôi sẽ hướng dẫn các bạn
cách sử dụng DMV để tìm hiểu thông tin sơ đồ lưu


cache.
Tạo nhiều sơ đồ vì các ghi chú hoặc khoảng trắng
thừa
Tôi chắc rằng các bạn đều ủng hộ ý tưởng đặt code
vào các thủ tục lưu trữ (Stored Procedure - SP).
Chúng ta thực hiện việc này nhằm tăng khả năng tái
sử dụng code trong khuôn khổ một ứng dụng đơn lẻ
hoặc trên nhiều ứng dụng. Tuy nhiên, không phải tất
cả các đoạn code được thực thi bởi máy chủ SQL đều
nằm trong các SP. Vài ứng dụng có thể được viết
bằng các lệnh T-SQL dạng in-line (lệnh thô). Nếu
bạn đang viết các đoạn mã T-SQL dạng thô, bạn cần
phải cẩn thận khi ghi chú hoặc đặt khoảng trắng bởi
nó có thể là nguyên nhân khiến máy chủ SQL tạo
nhiều sơ đồ lưu cache cho cùng một đoạn code T-
SQL.
Sau đây là một ví dụ gồm hai câu lệnh T-SQL khác
nhau:
SELECT * FROM
AdventureWorks.Production.Product
GO
SELECT * FROM
AdventureWorks.Production.Product -
- return records
GO
Như bạn thấy, tôi có hai câu lệnh T-SQL giống nhau.
Cả hai đều trả về tất cả bản ghi từ bảng
AdventureWorks.Production.Product. Vậy bạn nghĩ
máy chủ SQL sẽ tạo ra bao nhiêu sơ đồ lưu cache khi
chạy đoạn mã trên? Để trả lời câu hỏi này, tôi sẽ tìm

hiểu thông tin sơ đồ lưu cache bằng cách sử dụng các
DMV trong SQL Server 2005 và SQL Server 2008.
Để xem các sơ đồ tạo bởi hai câu lệnh T-SQL trên,
tôi sẽ chạy đoạn code sau:
DBCC FREEPROCCACHE
GO
SELECT * FROM
AdventureWorks.Production.Product
GO
SELECT * FROM
AdventureWorks.Production.Product -
- return records
GO
SELECT stats.execution_count AS
exec_count,
p.size_in_bytes as
[size],
[sql].[text] as
[plan_text]
FROM sys.dm_exec_cached_plans p
outer apply sys.dm_exec_sql_text
(p.plan_handle) sql
join sys.dm_exec_query_stats stats
ON stats.plan_handle =
p.plan_handle
GO
Trong đoạn code trên, trước tiên tôi giải phóng cache
thủ tục bằng cách chạy lệnh DBCC

×