2010-09-11 33 views
9

Tôi đang sử dụng các thủ tục của SQL Server và tôi có thói quen sử dụng các câu lệnh Print trong các thủ tục được lưu trữ để phân biệt mã thủ tục.Tuyên bố in trong thủ tục SQL sẽ ảnh hưởng đến hiệu suất?

Tôi có gần 200-250 quy trình trong DB của mình. Báo cáo in có nên ảnh hưởng đến hiệu suất không? Tôi đang làm việc trên ứng dụng Windows nhiều người dùng.

Trả lời

10

Tôi tìm thấy khi chạy dưới đây trên máy tính để bàn của tôi mà nhận xét ra các bản in gõ khoảng 15 giây tắt thời gian thực hiện có nghĩa là tác động trung bình là 15µs trong thử nghiệm đơn giản của tôi. RAISERROR WITH NOWAIT đã thêm trung bình gấp đôi.

DECLARE @date DATETIME2 

DECLARE 
    @count INT 

SET @count = 1 

SET @date = SYSUTCDATETIME() 

WHILE @count < 1000000 
BEGIN 
--RAISERROR ('%d',0,1, @count) WITH NOWAIT 
--PRINT @count 
    SET @count = @count + 1 
END 

SELECT DATEDIFF(MICROSECOND, @date, SYSUTCDATETIME())/1000000. 
+0

vừa thử truy vấn đó, tôi đã có tổng cộng 17 giây với "print @count" và 2,2 giây với bản in đã nhận xét – Shide

5

Một số câu lệnh PRINT sẽ có tác động không đáng kể đến hiệu suất - PRINT s trong các vòng lặp được thực hiện nhiều nghìn lần, tuy nhiên, cũng có thể gây ra các vấn đề về hiệu suất.

Không chắc rằng nếu bạn gặp phải sự cố về hiệu suất với các truy vấn của mình thì PRINT là thủ phạm - tuy nhiên, nếu nghi ngờ, hãy thử một số thử nghiệm!

0

Về cơ bản có một thêm overhead giới thiệu với các tổng hiệu suất của quá trình trao của bạn bởi vì bạn đang yêu cầu SQL Server để vượt qua đầu ra cho khách hàng, mà bạn sẽ không thể làm khác (tức là không sử dụng của câu lệnh PRINT).

Định lượng chi phí bổ sung, về mặt nó sẽ có tác động đến hiệu suất tổng thể, sẽ phụ thuộc vào mức phí bổ sung mà bạn đang áp dụng.

Nói cách khác, hãy thử và thử nghiệm.

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