2011-03-21 42 views
5

Tôi có một SQL 2005 DB chạy trong môi trường ảo.Cách tốt nhất để so sánh 2 biến thể của truy vấn SQL để thực hiện là gì?

Để đơn giản hóa mọi thứ, giả sử tôi có hai truy vấn SQL SELECT. Cả hai đều làm điều tương tự. Nhưng tôi đang cố gắng phân tích chúng cho mục đích hiệu suất.

Nói chung, tôi sẽ kích hoạt một DB cục bộ, tải lên một số dữ liệu và sử dụng thời gian để so sánh một biến thể với các biến thể khác.

Nhưng trong trường hợp này, vì DB lớn và đó là một hộp kiểm, khách hàng đã đặt nó trên một máy chủ đang phục vụ các máy ảo khác.

DB quá lớn để kéo xuống cục bộ, vì vậy đã hết (ít nhất là bây giờ).

Nhưng vấn đề chính của tôi là khi tôi chạy truy vấn đối với máy chủ, thời gian là tất cả các nơi. Tôi có thể chạy + chính xác + cùng một truy vấn 4 lần và nhận được thời gian của 7 giây, 8 phút, 3: 45 phút và 15 phút.

Suy nghĩ đầu tiên của tôi là sử dụng SET STATISTICS IO ON. Tuy nhiên, điều đó mang lại cơ bản đọc và ghi số liệu thống kê trên các bảng là truy vấn, tùy thuộc vào các biến thể trong truy vấn (bảng tạm, so với lượt xem, so với kết nối, v.v.). tổng hợp.

Tôi sau đó mặc dù SET THỜI GIAN THỜI GIAN ON, và chỉ sử dụng thời gian CPU, nhưng điều đó dường như giảm giá tất cả các IO, mà cũng không làm cho một đường cơ sở tốt.

Câu hỏi của tôi là có bất kỳ kỹ thuật phân tích thống kê hoặc hiệu suất nào khác có thể hữu ích trong tình huống như thế này không?

+0

Là so sánh * rất đơn giản, bạn có thể chạy cả hai trong cùng một lô với kế hoạch thực hiện chương trình và xem cái nào chiếm nhiều nhất trong tổng số phần trăm. – adrianbanks

+0

@adrian Kế hoạch thực hiện chỉ là hướng dẫn. ước tính chi phí subtree A vs B thường sai khi thực sự thực hiện – RichardTheKiwi

+0

@Richard: Điều đó có đúng ngay cả khi sử dụng kế hoạch thực hiện thực tế không? – adrianbanks

Trả lời

1

Thông tin IO THỐNG KÊ sẽ vẫn hữu ích. Bạn có thể thấy các số lần đọc, ghi và quét khác nhau đáng kể sẽ làm cho nó rõ ràng hơn khi truy vấn nào tốt hơn.

Bạn cũng có thể xem thông tin Kế hoạch thực hiện cho mỗi truy vấn. Bạn có thể chọn Query -> Display Display Execution Plan để xem bản trình bày đồ họa của ước tính SQL Server để chạy truy vấn. Bạn cũng có thể sử dụng Truy vấn -> Bao gồm Kế hoạch thực thi thực tế để hiển thị kế hoạch thực tế được sử dụng.

Và bạn cũng có thể sử dụng SET SHOWPLAN_TEXT, SET SHOWPLAN_ALL hoặc SET SHOWPLAN_XML để bao gồm kế hoạch thực hiện để xem hiển thị văn bản của gói.

Khi xem kết quả của kế hoạch thực hiện, bạn có thể xem giá trị chi phí ước tính và so sánh các giá trị cho mỗi truy vấn. Chi phí ước tính là giá trị tương đối có thể được sử dụng để so sánh chi phí của từng tùy chọn.

+0

Tôi đã làm việc với các kế hoạch đồ họa nhưng so sánh chúng, đặc biệt khi các truy vấn tôi so sánh có sự khác biệt đáng kể, có vẻ như so sánh táo với cam, và khó so sánh chúng khi các kế hoạch đồ họa đó có thể khá lớn. Nhìn vào ShowPlan_Text, tuy nhiên, điều đó có thể hoạt động tốt hơn một chút. Đã không chơi với điều đó trước đây. Tôi cũng sẽ xem xét thêm về giá trị Chi phí ước tính đó. Cảm ơn! – DarinH

+0

Tôi sẽ cung cấp cho Bobs câu trả lời được chấp nhận, nhưng tôi vẫn hy vọng có một cách tiếp cận đơn giản hơn. Vào cuối ngày, mặc dù, tôi đang cố gắng để có được một ổ đĩa TB hoặc 2TB được cài đặt trong máy tính của tôi vì vậy tôi có thể thử nghiệm tại địa phương và được thực hiện với nó. – DarinH

Các vấn đề liên quan