如何测试一个SQL查询的响应时间

如何测试一个SQL查询的响应时间,第1张

A服务器发一条SQL语句给B服务器的数据库执行,经过1s的网络传输,指令从A到达B,但是此时B的数据库正在忙,没空处理,于是等了2s,然后B有空了,去处理了此SQL语句,花了3s时间,然后把结果返回给A,网络传输又花了1s 。

于是这个响应时间就是:1s网络传输时间+2s等待时间+3s处理时间+1s网络传输时间 。

其实你有思路了啊。

问题简化一下:对一个ip,一个线程请求100次。该次请求的响应时间为调用httpclient前的响应时间减去接收到httpclient响应的时间。注意,本次请求是否有效要判断。平均响应时间和最大响应时间只不过是响应时间的统计而已,可以用数据库来做。

就是说数据库记录每次测试请求的响应时间,成功与否。统计数据最后出来。

只所以用多线程,是因为单线程顺序请求100次,不能模拟服务器真正的情况。

SELECT SUBSTRING(qt.text, ( qs.statement_start_offset / 2 ) + 1,

( ( CASE qs.statement_end_offset

WHEN -1 THEN DATALENGTH(qt.text)

ELSE qs.statement_end_offset

END - qs.statement_start_offset ) / 2 ) + 1) ,

qs.execution_count ,

qs.total_worker_time as total_worker_time_in_s,

qs.last_worker_time as last_worker_time_in_ms,

(qs.total_worker_time /qs.execution_count)/1000 as avg_execution_time_ms,

qs.last_execution_time

FROM sys.dm_exec_query_stats qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt

ORDER BY qs.last_execution_time DESC

--这个里面的total_worker_time在不考虑网络传输的情况下,可以看为是响应时间。

--测试结果:total_worker_time=编译时间+等待时间+执行时间+返回时间


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6474414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-23
下一篇 2023-03-23

发表评论

登录后才能评论

评论列表(0条)

保存