[英]Write large data directly from mysql socket to response socket in a servlet
我想知道这是否合理可行。 假设我有一个(Spring)servlet,该servlet提供在MySQL中存储为blob的大文件。 不管那是否理想,情况都是如此。
说我满足了许多这样的要求。 我想尽可能地限制我的Java应用程序使用的内存。
从理论上讲,从mysql连接直接读取到servlet响应的数据似乎应该能够写入,而无需在应用程序进程的内存中加载大byte[]
。
如果重要的话,我正在使用Spring JDBC和Spring mvc。
谢谢
当然,这就是ResultSet.getBinaryStream()
和ResultSet.getCharacterStream()
存在的原因。
然后,只需将InputStream
的内容复制到OutputStream
(大概是从控制器中的HttpServletResponse
检索到的ServletOutputStream
)即可。
然后,所使用的内存量和传输数据的实际方法取决于驱动程序。 天真的驱动程序(例如MySQL)只会将整个数据读入ByteArrayInputStream
,而PostgreSQL例如将根据需要使用其LargeObjectAPI
将数据与服务器分开传输,从而提高了内存使用效率。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.