知识大全 提高ASP.NET应用程序性能的10大方法[1]
Posted 数据库
篇首语:弓背霞明剑照霜,秋风走马出咸阳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 提高ASP.NET应用程序性能的10大方法[1]相关的知识,希望对你有一定的参考价值。
提高ASP.NET应用程序性能的10大方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 返回多个数据集
检查你的访问数据库的代码 看是否存在着要返回多次的请求 每次往返降低了你的应用程序的每秒能够响应请求的次数 通过在单个数据库请求中返回多个结果集 可以减少与数据库通信的时间 使你的系统具有扩展性 也可以减少数据库服务器响应请求的工作量
如果你是用动态的SQL语句来返回多个数据集 那我建议你用存储过程来替代动态的SQL语句 是否把业务逻辑写到存储过程中 这个有点争议 但是我认为 把业务逻辑写到存储过程里面可以限制返回结果集的大小 减小网络数据的流量 在逻辑层也不用在过滤数据 这是一个好事情
用SqlCommand对象的ExecuteReader方法返回一个强类型的业务对象 再调用NextResult方法来移动数据集指针来定位数据集 示例一演示了一个返回多个ArrayList强类型对象的例子 只从数据库中返回你需要的数据可以大大的减小你的服务器所耗用的内存
// read the first resultsetreader = mand ExecuteReader();
// read the data from that resultsehile (reader Read()) suppliers Add(PopulateSupplierFromIDataReader( reader ));
// read the next resultsetreader NextResult();
// read the data from that second resultsehile (reader Read()) products Add(PopulateProductFromIDataReader( reader ));
二 对数据进行分页
ASP NET的DataGrid有一个非常有用的功能 分页 如果DataGrid允许分页 在某一时刻它只下载某一页的数据 另外 它有一个数据分页的济览导航栏 它让你可以选择浏览某一页 而且每次只下载一页的数据
但是它有一个小小的缺点 就是你必须把所有的数据都绑定到DataGrid中 也就是说 你的数据层必须返回所有的数据 然后DataGrid再根据当前页过滤出当前页所需要的数据显示出来 如果有一个一万条记录的结果集要用DataGrid进行分页 假设DataGrid每页只显示 条数据 那就意味着每次请求都有 条数据都是要丢弃的 每次请求都要返回这么大的数据集 对应用程序的性能影响是非常大的
一个好的解决方案是写一个分页的存储过程 例子 是一个用于对Northwind数据库orders表的分页存储过程 你只需要传当前页码 每页显示的条数两个参数进来 存储过程会返回相应的结果
在服务器端 我专门写了一个分页的控件来处理数据的分页 在这里 我用了第一个方法 在一个存储过程里面返回了两个结果集 数据记录总数和要求的结果集
返回的记录总数取决于要执行查询 例如 一个where条件可以限制返回的结果集的大小 因为在分页界面中必须要根据数据集记录的大小来计算总的页数 所以必须要返回结果集的记录数 例如 如果一共有 条记录 如果用where条件就可以过滤成只返回 条记录 存储过程的分页逻辑应该知道返回那些需要显示的数据
Paging Through the Orders TableCREATE PROCEDURE northwind_OrdersPaged( @PageIndex int @PageSize int)ASBEGINDECLARE @PageLowerBound intDECLARE @PageUpperBound intDECLARE @RowsToReturn int
First set the rowcountSET @RowsToReturn = @PageSize * (@PageIndex + )SET ROWCOUNT @RowsToReturn
Set the page boundsSET @PageLowerBound = @PageSize * @PageIndexSET @PageUpperBound = @PageLowerBound + @PageSize +
Create a temp table to store the select resultsCREATE TABLE #PageIndex ( IndexId int IDENTITY ( ) NOT NULL OrderID int)
Insert into the temp tableINSERT INTO #PageIndex (OrderID)SELECT OrderIDFROM OrdersORDER BY OrderID DESC
Return total countSELECT COUNT(OrderID) FROM Orders
Return paged resultsSELECT O *FROM Orders O #PageIndex PageIndexWHERE O OrderID = PageIndex OrderID AND PageIndex IndexID > @PageLowerBound AND PageIndex IndexID < @PageUpperBoundORDER BY PageIndex IndexID
END
cha138/Article/program/net/201311/15553相关参考
提高ASP.NET应用程序性能的10大方法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
提高ASP.Net应用程序性能的十大方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一
提高ASP.Net应用程序性能的十大方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在写一
提高ASP.Net应用程序性能的十大方法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 四
提高ASP.Net应用程序性能的十大方法(上) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本
提高ASP.Net应用程序性能的十大方法[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
提高ASP.Net应用程序性能的十大方法(下) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!六后台
提高ASP.NET应用程序性能的几招方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下经验
10个提升ASP.NET程序性能的简单做法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishi
ASP.NET应用程序设计的10大技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在本篇文章