Những thói quen tốt khi viết câu lệnh T-SQL (Phần 3)
Số trang: 8
Loại file: pdf
Dung lượng: 144.88 KB
Lượt xem: 4
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Quản Trị Mạng - Trong phần ba này, bài viết sẽ giới thiệu cho bạn cách viết câu lệnh T-SQL để đẩy mạnh việc tái sử dụng sơ đồ lưu cache (bộ nhớ đệm). Hiểu rõ vấn đề các khoảng trắng và ghi chú tác động thế nào tới việc tạo sơ đồ mới lưu cache hay tái sử dụng sơ đồ sẵn có sẽ giúp bạn giảm thiểu số lượng sơ đồ mà ứng dụng của bạn phải lưu cache. Phần 1 Phần 2 Khám phá sơ đồ lưu bộ nhớ đệm Bạn đã tận dụng được lợi thế...
Nội dung trích xuất từ tài liệu:
Những thói quen tốt khi viết câu lệnh T-SQL (Phần 3) Những thói quen tốt khi viết câu lệnh T-SQL (Phần 3)Quản Trị Mạng - Trong phần ba này, bài viết sẽ giới thiệu cho bạn cách viếtcâu lệnh T-SQL để đẩy mạnh việc tái sử dụng sơ đồ lưu cache (bộ nhớ đệm).Hiểu rõ vấn đề các khoảng trắng và ghi chú tác động thế nào tới việc tạo sơ đồmới lưu cache hay tái sử dụng sơ đồ sẵn có sẽ giúp bạn giảm thiểu số l ượng sơđồ mà ứng dụng của bạn phải l ưu cache. Phần 1 Phần 2Khám phá sơ đồ lưu bộ nhớ đệmBạn đã tận dụng được lợi thế từ việc l ưu sơ đồ trên bộ nhớ đệm chưa? Bạn đãkhai thác các sơ đồ lưu cache đến mức nào? Ứng dụng của bạn chỉ sử dụngchúng một lần hay tận dụng nhiều lần? Bạn có nhiều s ơ đồ lưu cache cho cùngmột truy vấn trong cache thủ tục c ùng lúc không? Khoảng trống các sơ đồ lưucache 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ắcrằng bạn đã tối ưu hóa cache thủ tục và giảm thiểu số lượng sơ đồ lưu cachemà ứng dụng tạo ra. Có một vài vấn đề nhỏ trong cách viết câu lệnh T-SQLcủ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ạomột bản sơ đồ thực thi. Để tạo bản sơ đồ thực thi, trước tiên máy chủ SQL phảitiê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 ứngdụ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ệnhiệ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ụngsơ đồ 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ìmhiể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ừaTô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áisử 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 -SQLdạng in-line (lệnh thô). Nếu bạn đang viết các đoạn mã T-SQL dạng thô, bạncần phải cẩn thận khi ghi chú hoặc đặt khoảng trắng bởi nó có thể l à nguyênnhân khiến máy chủ SQL tạo nhiều sơ đồ lưu cache cho cùng một đoạn codeT-SQL.Sau đây là một ví dụ gồm hai câu lệnh T -SQL khác nhau:SELECT * FROM AdventureWorks.Production.ProductGOSELECT * FROM AdventureWorks.Production.Product -- return recordsGONhư 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âuhỏ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 DMVtrong SQL Server 2005 và SQL Server 2008. Để xem các sơ đồ tạo bởi hai câulệnh T-SQL trên, tôi sẽ chạy đoạn code sau:DBCC FREEPROCCACHEGOSELECT * FROM AdventureWorks.Production.ProductGOSELECT * FROM AdventureWorks.Production.Product -- return recordsGOSELECT stats.execution_count AS exec_count, p.size_in_bytes as [size], [sql].[text] as [plan_text]FROM sys.dm_exec_cached_plans pouter apply sys.dm_exec_sql_text (p.plan_handle) sqljoin sys.dm_exec_query_stats stats ON stats.plan_handle = p.plan_ handleGOTrong đoạn code trên, trước tiên tôi giải phóng cache thủ tục bằng cách chạylệnh DBCC FREEPROCCACHE. Lệnh n ày xóa bỏ toàn bộ sơ đồ thực thitrong bộ nhớ. Tuy nhiên tôi cũng xin có lời l ưu ý rằng bạn không nên sử dụnglệnh này khi làm việc trong doanh nghiệp bởi nó sẽ xóa bỏ toàn bộ sơ đồ lưucache. Điều này có thể gây ra những tác động to lớn tới công việc của bạn donhững sơ đồ thường dùng đều bị biên dịch lại. Sau khi giải phóng cache thủtục, tôi chạy tiếp hai câu lệnh SELECT khác nhau. Cuối c ùng, tôi liên kếtthông tin t ừ các DMV lại để trả về thông tin sơ đồ lưu cache của hai câu lệnhSELECT. Sau đây là kết quả nhận được khi chạy đoạn code tr ên:exec_count size plan_text---------- ----- ---------1 40960 SELECT * FROM AdventureWorks.Production.Product --return records1 40960 SELECT * FROM AdventureWorks.Production.ProductNhư bạn thấy, hai câu lệnh SELECT tr ên tạo ra hai sơ đồ lưu cache khác nhauv ...
Nội dung trích xuất từ tài liệu:
Những thói quen tốt khi viết câu lệnh T-SQL (Phần 3) Những thói quen tốt khi viết câu lệnh T-SQL (Phần 3)Quản Trị Mạng - Trong phần ba này, bài viết sẽ giới thiệu cho bạn cách viếtcâu lệnh T-SQL để đẩy mạnh việc tái sử dụng sơ đồ lưu cache (bộ nhớ đệm).Hiểu rõ vấn đề các khoảng trắng và ghi chú tác động thế nào tới việc tạo sơ đồmới lưu cache hay tái sử dụng sơ đồ sẵn có sẽ giúp bạn giảm thiểu số l ượng sơđồ mà ứng dụng của bạn phải l ưu cache. Phần 1 Phần 2Khám phá sơ đồ lưu bộ nhớ đệmBạn đã tận dụng được lợi thế từ việc l ưu sơ đồ trên bộ nhớ đệm chưa? Bạn đãkhai thác các sơ đồ lưu cache đến mức nào? Ứng dụng của bạn chỉ sử dụngchúng một lần hay tận dụng nhiều lần? Bạn có nhiều s ơ đồ lưu cache cho cùngmột truy vấn trong cache thủ tục c ùng lúc không? Khoảng trống các sơ đồ lưucache 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ắcrằng bạn đã tối ưu hóa cache thủ tục và giảm thiểu số lượng sơ đồ lưu cachemà ứng dụng tạo ra. Có một vài vấn đề nhỏ trong cách viết câu lệnh T-SQLcủ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ạomột bản sơ đồ thực thi. Để tạo bản sơ đồ thực thi, trước tiên máy chủ SQL phảitiê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 ứngdụ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ệnhiệ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ụngsơ đồ 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ìmhiể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ừaTô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áisử 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 -SQLdạng in-line (lệnh thô). Nếu bạn đang viết các đoạn mã T-SQL dạng thô, bạncần phải cẩn thận khi ghi chú hoặc đặt khoảng trắng bởi nó có thể l à nguyênnhân khiến máy chủ SQL tạo nhiều sơ đồ lưu cache cho cùng một đoạn codeT-SQL.Sau đây là một ví dụ gồm hai câu lệnh T -SQL khác nhau:SELECT * FROM AdventureWorks.Production.ProductGOSELECT * FROM AdventureWorks.Production.Product -- return recordsGONhư 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âuhỏ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 DMVtrong SQL Server 2005 và SQL Server 2008. Để xem các sơ đồ tạo bởi hai câulệnh T-SQL trên, tôi sẽ chạy đoạn code sau:DBCC FREEPROCCACHEGOSELECT * FROM AdventureWorks.Production.ProductGOSELECT * FROM AdventureWorks.Production.Product -- return recordsGOSELECT stats.execution_count AS exec_count, p.size_in_bytes as [size], [sql].[text] as [plan_text]FROM sys.dm_exec_cached_plans pouter apply sys.dm_exec_sql_text (p.plan_handle) sqljoin sys.dm_exec_query_stats stats ON stats.plan_handle = p.plan_ handleGOTrong đoạn code trên, trước tiên tôi giải phóng cache thủ tục bằng cách chạylệnh DBCC FREEPROCCACHE. Lệnh n ày xóa bỏ toàn bộ sơ đồ thực thitrong bộ nhớ. Tuy nhiên tôi cũng xin có lời l ưu ý rằng bạn không nên sử dụnglệnh này khi làm việc trong doanh nghiệp bởi nó sẽ xóa bỏ toàn bộ sơ đồ lưucache. Điều này có thể gây ra những tác động to lớn tới công việc của bạn donhững sơ đồ thường dùng đều bị biên dịch lại. Sau khi giải phóng cache thủtục, tôi chạy tiếp hai câu lệnh SELECT khác nhau. Cuối c ùng, tôi liên kếtthông tin t ừ các DMV lại để trả về thông tin sơ đồ lưu cache của hai câu lệnhSELECT. Sau đây là kết quả nhận được khi chạy đoạn code tr ên:exec_count size plan_text---------- ----- ---------1 40960 SELECT * FROM AdventureWorks.Production.Product --return records1 40960 SELECT * FROM AdventureWorks.Production.ProductNhư bạn thấy, hai câu lệnh SELECT tr ên tạo ra hai sơ đồ lưu cache khác nhauv ...
Tìm kiếm theo từ khóa liên quan:
Lý thuyết tin học SQL Tin học đại cương giáo trình Tin học đại cương bài giảng Tin học đại cương tài liệu Tin học đại cương lý thuyết Tin học đại cươngTài liệu liên quan:
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 303 0 0 -
Tài liệu hướng dẫn thực hành Tin học đại cương - ĐH Bách Khoa Hà Nội
40 trang 258 0 0 -
Giáo trình Tin học đại cương part 7
19 trang 239 0 0 -
Giáo trình Tin học đại cương: Phần 1 - ĐH Kinh tế Quốc Dân
130 trang 157 0 0 -
Giáo trình Tin học đại cương (Tái bản năm 2020): Phần 1 - PGS.TS. Nguyễn Thị Thu Thủy (Chủ biên)
105 trang 142 0 0 -
Giáo trình Tin học đại cương: Phần 1 - Vi Hồng Thắm
90 trang 130 0 0 -
Hướng dẫn thực hành lập trình C trên Visual Studio
9 trang 129 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 123 0 0 -
Trắc nghiệm và đáp án hệ cơ sở dữ liệu - ĐH Công Nghiệp Tp. Hồ Chí Minh
63 trang 118 0 0 -
Quản trị người dùng trong Exchange 2007 bằng Powershell
9 trang 107 0 0