[问题] 大量资料呈现效能

楼主: SinclairShen (SinclairShen)   2014-12-10 19:51:14
使用.net C#
1、同一时间可能有1000人在线上
2、读取的table有2000万笔资料
3、每次查询读取1万笔资料
有查询网页,此网页分两个部份,
上半部将读到的1万笔资料划成趋势图,
下半部将这1万笔资料以GridView分页呈现,
每页显示10笔资料
请问,在以上条件下,下列那种方式可以减少使用者等待时间?
还是另有其他的方式?
方式一:
一开始从数据库读入一万笔资料,
将这一万笔资料划成趋势图,
再将资料以DataTable存于ViewState,
GridView的资料来源则读取该ViewState,
翻页与字段排序时也读取该ViewState
方式二:
任何动作都从数据库读取,
从数据库读取这一万笔资料划成趋势图,
Bind GridView时再从数据库欲显示的10笔资料,
翻页与字段排序时也都是从数据库取出欲显示的10笔资料
谢谢
作者: vidan41 ( )   2014-12-10 20:27:00
方法二,可以用orm采skip take的方式每次抓10笔图和表用ajax分开处理,图只要画一次就好
楼主: SinclairShen (SinclairShen)   2014-12-10 20:34:00
请问 如果每次最多只读500笔资料 也是方式二比较好吗?
作者: vidan41 ( )   2014-12-10 20:38:00
viewstate本身就是微软做webform的一个模拟有状态的机制近年MVC那么盛行也有部分原因是因为viewsate的肥大导致如果您写的网站是webform架构而非MVC,我会建议能用client端ajax的技术就多使用,尽量轻量化,少用viewstate
作者: GoalBased (Artificail Intelligence)   2014-12-10 22:11:00
gridview的分页应该不会一开始就全传吧..?我用gv内建的分页没特别注意..但不会有效能问题之后你的趋势图适用char?你想想看每一个user 一进到这个图表,你就要去数据库捞一万笔,画成图(jpg?),这个动作挺吃资源的
楼主: SinclairShen (SinclairShen)   2014-12-11 08:49:00
方法二的话dataview不是一开始就全传,趋势图是用.net chart
作者: jcpf126 (jcpf126)   2014-12-11 08:51:00
我很好奇一万笔资料存成Viewstate后送到client会有多大然后同时有1000人在线上,会吃掉Server多少上传频宽呢...
楼主: SinclairShen (SinclairShen)   2014-12-11 11:19:00
以方法二,1万笔大于1MB1万笔大约1MB
作者: vivi303030 (wengogogogo)   2014-12-23 09:27:00
好奇,1万笔资料呈现到web需要多少时间?

Links booklink

Contact Us: admin [ a t ] ucptt.com