将大型数据直接从mysql套接字写入servlet中的响应套接字



我想知道这是否合理。假设我有一个(Spring)servlet,它为MySQL中存储为blob的大型文件提供服务。不管这是否理想,情况就是这样。

比方说我满足了很多这样的要求。我想尽可能地限制我的java应用程序使用的内存。

从理论上讲,我应该能够在从mysql连接读取数据时直接将数据写入servlet响应,而无需将大的byte[]加载到应用程序进程的内存中。

如果这很重要的话,我使用的是SpringJDBC和Springmvc。

感谢

当然,这就是ResultSet.getBinaryStream()ResultSet.getCharacterStream()存在的原因。

然后,只需要将InputStream的内容复制到您的OutputStream(可能是从控制器中的HttpServletResponse检索到的ServletOutputStream)。

所使用的内存量和传输数据的实际方法由驾驶员决定。像MySQL这样的幼稚驱动程序只会将整个数据读取到ByteArrayInputStream中,而PostgreSQL则会根据需要使用其LargeObjectAPI将数据从服务器中分离出来,从而提高内存使用效率。

最新更新