C# 减少到服务器/数据库的往返
在编写ASP.NET页面时,您会发现哪些迹象表明您的页面与数据库或服务器的往返次数过多C# 减少到服务器/数据库的往返,c#,asp.net,performance,ado.net,C#,Asp.net,Performance,Ado.net,在编写ASP.NET页面时,您会发现哪些迹象表明您的页面与数据库或服务器的往返次数过多 (这是一个一般性的问题,但我说的是ASP.NET,因为我的大部分代码都是在web端编写的)。多少钱算是太多了?100万欧元的问题!轮廓然后是个人资料。如果你的应用程序大部分时间都在访问数据,那么你就有问题了(应该查看sql跟踪)。如果它花费了大部分时间来绘制UI,那么(假设您的视图没有进行数据访问),您可能应该首先查看其他地方…往返与延迟的关系比移动的数据总量的关系更大,因此为它们进行优化确实很有意义。通常的
(这是一个一般性的问题,但我说的是ASP.NET,因为我的大部分代码都是在web端编写的)。多少钱算是太多了?100万欧元的问题!轮廓然后是个人资料。如果你的应用程序大部分时间都在访问数据,那么你就有问题了(应该查看sql跟踪)。如果它花费了大部分时间来绘制UI,那么(假设您的视图没有进行数据访问),您可能应该首先查看其他地方…往返与延迟的关系比移动的数据总量的关系更大,因此为它们进行优化确实很有意义。通常的方法是使用执行多个步骤的存储过程,甚至可能返回多个结果集。我知道这听起来可能是重复的,但客户机-服务器往返取决于连接任意一侧有多少程序逻辑 首先要检查的是验证:您必须始终在服务器端验证和清理您的输入,但这并不意味着您不能在客户端也这样做,从而减少只用于检查输入的往返 第二:在客户端,您可以做些什么来减少服务器端过载?您可以在客户端检查或进行计算。还有一种AJAX,可以用来只加载正在更改的页面的一部分 第三:你能把工作委托给另一台服务器吗?如果您的服务器负载过大,为什么不使用web服务,或者干脆将逻辑的某些方面委托给另一台服务器呢 正如马克所写:“怎么会太多?”?这取决于你和你的预算 在编写ASP.NET页面时,有哪些标志 您是否查找您的页面是否为空 往返于某个地点的次数过多 数据库还是服务器 当然,这一切都取决于你的个人资料。然而,这里有一些指标,它们并不意味着有问题,但往往会表明
- 页面在本地渲染需要很长时间
- 阅读这个问题:,尤其是
- 要呈现页面,您需要30多次往返。我从帽子里拿出了这个数字,但假设一次往返大约需要3.5毫秒,那么30次往返将超过100毫秒的指导原则(在任何其他类型的处理之前)
- 呈现页面时涉及的所有查询都经过了大量优化,执行时间不会超过一两毫秒。没有任何操作需要在每次呈现页面时执行大量CPU周期
- 数据访问被抽象出来,而不是以任何方式缓存。例如,如果GetCustomer将调用DAL,而DAL又发出一个查询,并且您的页面请求在批处理中检索不到的100个Customer对象,那么您可能会遇到麻烦
- :这准确指示服务器接收的Transact-SQL批处理的数量。在大多数情况下,它可以与从网站到SQL的往返次数1:1相等
- :此计数器是每个数据库的实例,因此我可以快速查看哪个数据库中存在“活动”。通过这种方式,我可以关联网站数据往返(即我的应用程序逻辑请求,转到应用程序数据库)和ASP会话状态和用户内容(转到ASP会话数据库或tempdb)
- :这与上面的计数器(每秒事务数)相关,因此我可以了解站点的读写比率
- :使用此计数器,我可以获得站点每秒看到的请求数。与每秒SQL批处理请求数相关,它很好地指示了每个请求的平均往返次数