【发布时间】:2015-03-21 15:50:13
【问题描述】:
我正在使用一些数据库,我需要在文件中打印每个数据库。 我的服务器有 5 GB 的 RAM,我只为 tomcat 服务器分配了 4 GB。
我制作了一个简单的结果集,可以查询每个数据库的所有行。 然后我打印文件 (.dat) 中的每一行(显然我是分开做的)
我可以处理包含 5738095 行的整个结果集
但是如果我想使用超过 700 万行的数据库,我会收到错误“Java 堆空间”,我开始使用 3GB 和 2GB 的 tomcat,但是当我开始使用超过 300 万行时我需要向服务器添加更多 RAM 的行,所以我的问题是,将更多 RAM 放入服务器是否很好,或者如何划分结果集并打印百万分之百万而不会出现错误“java heap space”。
我一直在考虑计算整个数据库并制作诸如限制 0 偏移 1000000、限制 1000000 偏移 1000001 之类的东西,但我真的迷路了。感谢您的阅读和帮助,对不起我的英语。
有一些代码
//numero columnas is the total of columns
rs_datos = StDatos.executeQuery("select * from table");
while(rs_datos.next())
{
for(int i = 0; i < numeroColumnas; i++)
{
if(i+1 == numeroColumnas)
{
pw.print(rs_datos.getString(i+1));
}
else
pw.print(rs_datos.getString(i+1) + "|");
}
pw.println("");
}
pw.close();
【问题讨论】:
-
不管你有多少(或少)内存。一个正确编写的循环,只是将一些数据库结果汇集到一个文件中,应该不吸收 4gig 的内存,除非你正在处理一些巨大的 blob 记录。
-
您使用的是哪个数据库?
-
mysql / JSP + JDBC .