佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1142|回复: 9

ASP.NET performance 问题

[复制链接]
发表于 22-6-2006 02:13 AM | 显示全部楼层 |阅读模式
请问,在developement 已经达到80 %的前提下,要怎么样避免重做,而达到把web application performance加快?

如果说,你的系统大部分使用dynamic SQL 来处理你的query...然而,在实际Go live情况下,系统必须一天至少处理150000 的record...我找了一些资料,都说以dynamic sql来handle这样的需求会严重拖慢performance...然而,既然已经做了80%,除了把query 都换成store proc, 还有别的方法吗?
回复

使用道具 举报


ADVERTISEMENT

发表于 22-6-2006 09:32 AM | 显示全部楼层
除了 stored procedure, 你可以尽量减少 session 的使用, 可以的话转换去 ViewState, 也尽量用 IsPostBack 来减少重载 form 的资料, 或尽量避免让 DataView 储存太多的资料后做 re-select, 因为 DataView 只是一个 buffer.
回复

使用道具 举报

发表于 23-6-2006 02:10 AM | 显示全部楼层
我假设把你的 cache 当成是 ViewState, 那么你只有一个选择: DataTable, 因为 DataView 是没办法储存到 ViewState 的.

另外 DataView 可以包含多个 DataTable, 是用来过滤 DataTable 的资料的工具. 所以表面上看来... DataView 会比较消耗资源.
回复

使用道具 举报

 楼主| 发表于 26-6-2006 06:19 PM | 显示全部楼层
原帖由 goatstudio 于 22-6-2006 09:32 AM 发表
除了 stored procedure, 你可以尽量减少 session 的使用, 可以的话转换去 ViewState, 也尽量用 IsPostBack 来减少重载 form 的资料, 或尽量避免让 DataView 储存太多的资料后做 re-select, 因为 DataView 只是一个 ...


现在主要问题出现在datagrid...

每一次换页数,无法避免postback,将重新bind 150000++的record...

我们没有用DataView ....

我现在在想,能不能够用viewstate储存150000record 的datatable...除了第一次load,每一次换页数,去viewstate 的datatable拿回record.....


我找了不少资料,似乎都说stored proc处理这样大的资料库是最理想的选择。。。然而,时间紧迫,是不太可能改得了。。。还有什么办法在ASP.NET 可以有效率的处理这样大的资料?
回复

使用道具 举报

 楼主| 发表于 26-6-2006 06:48 PM | 显示全部楼层
暂时,我用custom paging减少拿到的record...然而,这个办法让我的sorting做不到了。。。

网上找的都是用stored proc做custom paging & sorting...而我不要用stored proc...

有任何dynamic sql custom paging & sorting 的资料吗?
回复

使用道具 举报

发表于 26-6-2006 11:29 PM | 显示全部楼层
原帖由 雨吟 于 26-6-2006 06:19 PM 发表


现在主要问题出现在datagrid...

每一次换页数,无法避免postback,将重新bind 150000++的record...

我们没有用DataView ....

我现在在想,能不能够用viewstate储存150000record 的datatable...除了第 ...


你不能一次过读取那么多的资料, 那会导致速度会拖慢, 即使用了 viewstate 也一样.
这要看你的 code 要如何改,你可以预设一些 criteria 在里面, 否则, 真的只有在 store proc 里面改.
回复

使用道具 举报

Follow Us
发表于 26-6-2006 11:31 PM | 显示全部楼层
原帖由 雨吟 于 26-6-2006 06:48 PM 发表
暂时,我用custom paging减少拿到的record...然而,这个办法让我的sorting做不到了。。。

网上找的都是用stored proc做custom paging & sorting...而我不要用stored proc...

有任何dynamic sql custom  ...


DataGrid 有个很伤脑筋的设计... 那就是 page + sorting 永远是最难搞的...
建议你不要用 DataGrid 的 sorting, 自行写一个. 你可以用 querystring 的方法来办到.
回复

使用道具 举报

 楼主| 发表于 27-6-2006 02:45 PM | 显示全部楼层
之前的瓶颈,在于我们一直想办法解决处理上万record的问题。。。于是,就一直把解决要素锁定在"上万"这个issue...

现在,想了个折衷的办法,把我们的query全部改成一次只选择最多一个数目的record... eg. 每次只显示1000 record。。。

没有上万,就没有问题了。。。。可以用default paging & sorting。。。

个人觉得,这样子好像解决了,又好像没有解决问题。。。

只是作为充实知识的前提,我想请问各位,通常怎么样处理这样大的系统?

很多资料,对database performance在 dynamic SQL, store proc etc的处理下的成效比较,谁比较快?谁比较好?都解释的模林两可。。。经验谈来说,你们觉得哪一个比较适合处理大的系统和要求??
回复

使用道具 举报


ADVERTISEMENT

发表于 27-6-2006 04:36 PM | 显示全部楼层
如果你用MYSQL,那我建议用LIMIT来分也。

如果你一次过把DATABASE里的所有资料显示出来就很吃力了。。尤其是你进行SEARCHING的时候。而且IIS那里也有TIMEOUT的DURATION。
回复

使用道具 举报

发表于 30-6-2006 10:57 PM | 显示全部楼层
原帖由 雨吟 于 27-6-2006 02:45 PM 发表
之前的瓶颈,在于我们一直想办法解决处理上万record的问题。。。于是,就一直把解决要素锁定在"上万"这个issue...

现在,想了个折衷的办法,把我们的query全部改成一次只选择最多一个数目的record.. ...


Stored Procedure 会比较快, 也能处理一些特殊的情况, 例如说你需要用到资料库里的指标在一堆资料中找出特定的资料.

把 query 显示数目算是一个方法, 虽然是折衷的方法, 别忘了除了 sql server, 限制你们的还有 bandwidth, 如果你有用 online banking, 银行通常会限制你索取资料的数目.

我的方法是, 可以的话, 尽量用 Stored Procedure/View, 可以避免在 run time 的时候把长长的 sql 传上资料库. 另外, 尽量好好运用 .Net 里的 DataView/DataTable, 这两个方法如果运用得当, 可以减少你访问资料库的数量.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 10-8-2025 08:31 PM , Processed in 0.125628 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表