sql-server – 为什么执行语句的速度取决于网络连接?
看起来执行T-SQL的速率取决于收集毗连对处事器的耽误.我假设假如SQL Server没有任何内容可以向客户陈诉,它只会执行,直到完成但测试表现另一个故事. create procedure UselessLoop @I int as declare @D datetime = getdate() while @I > 0 set @I -= 1 print datediff(millisecond,@D,getdate()) exec UselessLoop 100000 Server Milliseconds local 53 nearby 63 faraway 660 exec UselessLoop 1000000 Server Milliseconds local 546 nearby 640 faraway 6183 行使SSMS从差异计较机对统一处事器执行测试.当地从处事器执行,四面是在统一个当地收集上,远处是500公里外的另一个办公室,用1千兆光纤毗连. SQL Server和客户端之间显然存在一些直接依靠于执行的语句数目的通讯. 我行使Wireshark来查察传输的内容,我不能说我领略那么多,但它是一个tcp.stream,在22740个数据包中互换总共26 MB. 一个无用的成果呢? create function dbo.UDFUselessLoop(@I int) returns int as begin declare @D datetime = getdate() while @I > 0 set @I -= 1 return datediff(millisecond,getdate()) end print dbo.UDFUselessLoop(1000000) 无论从那里执行,它城市在406毫秒内执行.看起来轮回中没有与客户端的通讯. 办理要领
就在这里.默认环境下,SQL Server在存储进程中的每个语句之后发送一个TDS 您可以行使T-SQL呼吁榨取发送这些动静: SET NOCOUNT ON; 以下是此呼吁从the Books Online entry开始的摘录(我的重点):
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |