首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回流HTTP-Response的最好方法?

回流HTTP-Response的最好方法?
EN

Stack Overflow用户
提问于 2016-02-14 09:44:54
回答 1查看 237关注 0票数 0

我有一个REST服务,它可能必须从数据库返回超过1000,000行。我是通过打开一个输出流来实现的。基本上,我从HTTP-RESPONSE中获取printwriter,并在从数据库中获取时将其流式传输,而不是将所有内容存储在内存中,然后再返回。

像这样的东西:

代码语言:javascript
复制
 @Override
      public void processRow(ResultSet resultSet) throws SQLException {
         String data = resultSet.getString("data");
            printWriter.write(data);
            printWriter.flush();
         }
      }

我的问题是,我们是否可以通过在存储桶中进行刷新来获得任何性能提升?例如在字符串缓冲区中存储5000行,然后将其刷新出来,而不是每行刷新它。

EN

回答 1

Stack Overflow用户

发布于 2016-02-14 10:31:58

每次刷新都会使系统通过所有缓冲区将数据“刷新”到网络层,或者,这取决于您正在使用的库,甚至可能会阻塞,直到远程端确认数据已经到达。这意味着它将花费大量的时间在I/O阻塞上,也就是“它将非常慢”。

我建议在这里删除flush,创建一个相当小(512-8192字节)的BufferedOutputStream,并在其上创建PrintWriter,并使用不同的缓冲区大小执行测量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35387495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档