快速业务通道

ASP.NET 2.0数据教程之二十五:大数据量时提高分页的效率

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

这些代码都可以在EfficientPaging.aspx的code-behind class里找到

比较默认和自定义分页的性能由于自定义分页返回需要的数 据,而默认分页返回全部数据,因此自定义分页比默认分页更有效率是非常清楚的. 但是性能上的提升究竟有多少?从默认分页换成自定义分页有什么性能上的优势?

很不幸,没有一个统一的答案.性能的优势取决于很多因素,其中最重要的 是分页记录的数量,数据库的负载和web server和数据库的通信渠道.对一些小的 表来说,性能的差异是可以忽略的.对成千上万行数据的表来说,差异是非常明显的 .

我们的一篇Custom Paging in ASP.NET 2.0 with SQL Server 2005文章 包含一些对比这两种分页技术的性能测试,用到的表有大概50,000 条记录.在测试 中我分别测试了在SQL Server里(使用SQL Profiler)和ASP.NET页面里(使用 ASP.NET’s tracing features)执行查询的时间.注意这是在我的开发环 境下单个用户的测试结果,因此没有模仿典型的网站的负载情况,结果也并不科 学.

  Avg. Duration (sec) Reads Default Paging – SQL Profiler 1.411 383 Custom Paging – SQL Profiler 0.002 29 Default Paging – ASP.NET Trace 2.379 N/A Custom Paging – ASP.NET Trace 0.029 N/A 如你所见,获取特定页的数据平均少了354 reads,并在恩短 的时间完成.而在页面里,自定义分页是默认分页所花费时间的1/100.在my article 可以看到更多的测试信息和代码,你可以下载测试数据库在你的环境里 重新测试.

总结默认分页是非常容易实现的–你仅仅只需要选择控 件上的智能标签里的Enable Paging checkbox –但是方便带来的是性能的 损失.在默认分页时,用户无论请求哪个页面,所有的数据都会被返回,即使只 有一小部分被显示出来.为了提升性能,ObjectDataSource 提供了一个可选择的 分页功能–自定义分页.

自定义分页通过只获取需要显示的数据来 解决默认分页的性能问题,但是使用起来更麻烦.首先,请求特定数据的查询语 句必须正确而且有效.这个可以通过很多方法来实现.在本教程里我们使用SQL Server 2005的ROW_NUMBER来实现给结果分级,然后返回等级在特定范围内的数据 .其次我们需要增加一个方法来获取需要分页的总记录数.在创建完DAL和BLL方 法后,我们还需要配置ObjectDataSource以使它可以获取需要分页的总记录数, 并将正确的Row Index 和Maximum Rows 的值传给BLL.

虽然使用自定义分 页需要一系列的操作,而且远没有默认分页那么简单.但是在大数据量的情况还 是必须的.只显示需要的数据,自定义分页可以节省很多时间,减轻数据库的负 担.

祝编程快乐!

作者简介

Scott Mitchell,著有六本 ASP/ASP.NET方面的书,是4

2
3
4
5
6
7 protected void ObjectDataSource1_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
{
// If we get back a Boolean value from the DeleteProduct method and it''s true, then
// we successfully deleted the product. Set AffectedRows to 1
if (e.ReturnValue is bool && ((bool)e.ReturnValue) == true)
e.AffectedRows = 1;
}

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号