社区
Web Services
帖子详情
如果从WEB SERVICE 上返回一个有10W条数据的DATASET,怎么提高效率
flyskywlh
2005-07-29 06:49:55
我现在要做一个模块,要通过WEB SERVICE 访问SQL,可能要连续读几十个表,其中几个表的数据可能达到10W条,那么把这些DATASET返回到本地进行处理,比如插入操作,请问怎么提高效率,我试验过,返回一个10W条记录的DATASET时,CPU已经占用到了98%,请问怎么解决?
...全文
339
14
打赏
收藏
如果从WEB SERVICE 上返回一个有10W条数据的DATASET,怎么提高效率
我现在要做一个模块,要通过WEB SERVICE 访问SQL,可能要连续读几十个表,其中几个表的数据可能达到10W条,那么把这些DATASET返回到本地进行处理,比如插入操作,请问怎么提高效率,我试验过,返回一个10W条记录的DATASET时,CPU已经占用到了98%,请问怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sleeping100
2005-08-02
打赏
举报
回复
学习。。。
flyskywlh
2005-08-02
打赏
举报
回复
请问有现成的代码吗?我用网上的一篇文章里的代码进行压缩,总是出错,不成功..
ainijin
2005-08-02
打赏
举报
回复
两种方案
1 分页
2 用实体 不要用dataset
flyskywlh
2005-08-01
打赏
举报
回复
TO: KILLERLIU
老兄,我没办法的,我现在要做的是要把服务器上的数据取出,不是作分页用,是要导入到客户端的ACCESS表..
而且要取的表还不是一个,是N个.
killerliu
2005-08-01
打赏
举报
回复
有毛病。。。我只能这么说
如果你实在是要一次取出这么多数据,,那就写个临时表吧。。写完了以后从表里选出适当的数据显示。。分页操作嘛。。。干嘛一次性把所有数据都选出来。。不是摆明了消耗服务器资源吗??
lmpeel
2005-08-01
打赏
举报
回复
什么情况下要一次取这么多数据啊???
CoolBaby25
2005-08-01
打赏
举报
回复
1、优化你的数据库表。
2、所有语句写成存储过程。
3、优化SQL语句。
select top 10分段找出??
表中总有关建列。比如日期等。
写复合语句查寻某个段的数据,本人不提倡这样做。
flyskywlh
2005-08-01
打赏
举报
回复
TO : GUYIGOOD
有没有你说的方法的代码? 怎么把一个大数据集用SELECT TOP 10 分段找出?
guyigood
2005-08-01
打赏
举报
回复
只有控制数据量,才能提高效率,数据表上多使用索引。操作时尽量使用SELECT TOP 10 * FROM 表名来操作,插入语句使用SQL语句就可以了,不要使用DATASET的更新办法,否则惨死。
flyskywlh
2005-08-01
打赏
举报
回复
N天了,还没人回答....
有人做过压缩的方法么?
aijing
2005-08-01
打赏
举报
回复
up
kevin_net
2005-08-01
打赏
举报
回复
返回的数据存成临时的xml文件,然后压缩,压缩后会很小.返回 byte[].
李天平
2005-08-01
打赏
举报
回复
.net与java交互的压缩方式较为简单的实现方式是用gzip格式,java本身有gzip的支持,.net没有相应的类库,我使用了开源项目sharpziplib来实现.net端的压缩功能。
经过试验,传输相同的字串,起码能够让长度减少三分之二,并且有效减低CPU的利用率。
代码如下:
1、C#端代码
public static string Compress(string uncompressedString)
{
byte[] byteData=System.Text.Encoding.UTF8.GetBytes(uncompressedString);
MemoryStream ms=new MemoryStream();
Stream s=new GZipOutputStream(ms);
s.Write(byteData,0,byteData.Length);
s.Close();
byte[] compressData=(byte[])ms.ToArray();
ms.Flush();
ms.Close();
return System.Convert.ToBase64String(compressData,0,compressData.Length);
}
public static string DeCompress(string compressedString)
{
// string uncompressedString=string.Empty;
StringBuilder sb=new StringBuilder(40960);
int totalLength=0;
byte[] byteInput=System.Convert.FromBase64String(compressedString);
byte[] writeData=new byte[4096];
Stream s=new GZipInputStream(new MemoryStream(byteInput));
while(true)
{
int size=s.Read(writeData,0,writeData.Length);
if(size>0)
{
totalLength+=size;
sb.Append(System.Text.Encoding.UTF8.GetString(writeData,0,size));
}
else
{
break;
}
}
s.Flush();
s.Close();
return sb.ToString();
}
2、Java端代码
public static String compress(String s) throws IOException{
ByteArrayInputStream input = new ByteArrayInputStream(s.getBytes("UTF-8"));
ByteArrayOutputStream output = new ByteArrayOutputStream(1024);
GZIPOutputStream gzout = new GZIPOutputStream(output);
byte[] buf=new byte[1024];
int number;
while ((number = input.read(buf)) != -1){
gzout.write(buf,0,number);
}
gzout.close();
input.close();
String result =new BASE64Encoder().encode(output.toByteArray());
output.close();
return result;
}
public static String decompress(String data) throws IOException{
ByteArrayOutputStream output = new ByteArrayOutputStream(1024);
ByteArrayInputStream input = new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(data));
GZIPInputStream gzinpt = new GZIPInputStream(input);
byte[] buf = new byte[1024];
int number = 0;
while((number = gzinpt.read(buf)) != -1){
output.write(buf,0,number);
}
gzinpt.close();
input.close();
String result = new String(output.toString("UTF-8"));
output.close();
return result;
}
在web service服务器端加压,java客户端的调用解压,使用web service的性能得到了提升。
但觉得这样还是不能彻底的解决问题,下一步准备做的改进主要有两点,一是把服务器把返回的大数据量压缩成zip文件以attachment的格式返回给java客户端,另一个是在内部网络以tcp soap的方式进行调用,辅以多线程的技术,更有效地利用服务器的多CPU与并实现服务的分流,使web service不必依赖于IIS(当然啦,这些都需要WSE的支持)。
flyskywlh
2005-08-01
打赏
举报
回复
顶上去问!@
用压缩怎么压缩?
从
WEB
SERVICE
上
返回
大
数据
量的
DATASET
前段时间在做
一个
项目的时候,遇到了要通过
WEB
SERVICE
从服务器上
返回
数据
量比较大的... 众所周知,如果不用其它方法,直接从
WEB
SERVICE
上传回
一个
10W
条
记录的
DATASET
,可想而知的后果是什么,CPU要占用 100%,且要等上几
从
WEB
SERVICE
上
返回
大
数据
量的
DATASET
[转]
众所周知,如果不用其它方法,直接从
WEB
SERVICE
上传回
一个
10W
条
记录的
DATASET
,可想而知的后果是什么,CPU要占用 100%,且要等上几分钟,这是任何
一个
项目都无法忍受的.在我上网找资料的过程中,试验了几种不同的方法,如...
从
WEB
SERVICE
中
数据
压缩策略(转)
前段时间在做
一个
项目的时候,遇到了要通过
WEB
SERVICE
从服务器上
返回
数据
量比较大的
DATASET
,当然,除了显示在页面上以外,有可能还要用这些
数据
在客户端进行其它操作。查遍了网站的文章,问了一些朋友,也找了一些解决...
Android Compose 新闻App(二)ViewModel、Hlit、
数据
流.docx
Android Compose 新闻App(二)ViewModel、Hlit、
数据
流.docx
软时间窗下区域内电子商务物流配送线路问题研究.docx
软时间窗下区域内电子商务物流配送线路问题研究.docx
Web Services
12,166
社区成员
16,325
社区内容
发帖
与我相关
我的任务
Web Services
.NET技术 Web Services
复制链接
扫一扫
分享
社区描述
.NET技术 Web Services
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章