为什么在vb .net中使用ExecuteReader()执行相同的查询两次时,它会返回两个非常不同的响应时间?

时间:2017-08-26 13:23:41

标签: sql-server vb.net ado.net

每当用户点击GetReport按钮时,都会向服务器发出请求,在后端形成SQL,并与Database建立连接。执行函数ExecuteReader()时,它会以不同的时间响应返回数据。

生产环境中有12台服务器,设置是这样的,当后端超过60秒没有响应时,连接将被删除,因此“UI”上会出现空白屏幕。

在我的代码中,SQL形成并建立连接,并且当执行ExecuteReader()函数时,它在60秒的间隔后返回数据,其中根据服务器中的设置,连接被删除并因此导致出现空白屏幕。

如果ExecuteReader()函数在60秒内返回数据,则该功能正常。问题是仅当ExecuteReader()函数在60秒内未检索到数据时才会出现问题。

问题是,ExecuteReader()函数会在2秒内返回数据,有时为同一个SQl,有时需要2分钟才能检索数据。

请说明为什么同一查询在不同时间间隔内返回数据存在差异,以及我应该如何处理这种情况,因为我们由于安全问题而无法增加生产中的响应时间。

代码位于vb.net

1 个答案:

答案 0 :(得分:0)

你自己说:

  

我应该如何处理这种情况,因为我们由于安全问题而无法增加生产中的响应时间。

你无能为力

但是,如果您突然获得修改正在运行的查询的权限,或重新配置生产系统的资源配置,请在此处回复执行计划的屏幕截图,我们可以告诉您任何潜在的性能瓶颈。

丹的评论几乎涵盖了为什么数据库查询可能会很慢;通常类似的原因,为什么YouTube在晚上7点缓慢缓冲 - 父母在6点钟下班回家,孩子们在一小时前尖叫他们想要去YouTube,而父母拼命想让孩子参与更具教育性或体育活动的东西,父母终于放弃并想要一些平静和安静:) - 您和YouTube之间整个链中的资源供应/供需