我的要求是使用Java从db2数据库中获取将近50万条记录。这些记录我将在文本文件中写入。 目前我首选BufferedWriter做到这一点如下 -BufferedWriter和OutputStramWriter之间的性能
考虑性能,其中包括执行时间,更快的I/O操作和更少的内存使用情况我应该去哪个选项?
测试1 - 当我拿来从数据库 的BufferedWriter近3200条记录 - 需要9秒 OutputStramWriter - 需要8秒
但我很困惑那些之间,因为我有在单杆取近50万条记录,其中性能是关键因素!!
try
{
Statement stmt = new Statement();
Connection con = getConnection();
BufferedWriter bw = getWriter();
String query = "select field1,field2,field3,field4,field5 from table1 WITH UR";
stmt = con.createStatement();
stmt.setFetchSize(10000);
ResultSet rs = stmt.executeQuery(query);
StringBuffer sb = new StringBuffer();
while (rs.next()) {
sb.append(rs.getString(field1));
sb.append(rs.getString(field2));
sb.append(rs.getString(field3));
sb.append(rs.getString(field4));
sb.append(rs.getString(field5));
bw.write(sb.toString());
bw.newLine();
sb.setLength(0);
}
bw.flush();
}
catch(SQLException ex)
{
ex.printstackTrace();
}
catch(Exception ex2)
{
ex2.printstackTrace();
}
finally()
{
stmt.close();
con.close();
bw.close();
}
protected static BufferedWriter/OutputStreamWriter getWriter()
{
//here I have tow options
//1.
//FileOutputStream fos = new FileOutputStream(file);
//OutputStreamWriter osr= new OutputStreamWriter(fos);
// return osr;
//2.
//BufferedWriter out = new BufferedWriter(new FileWriter(file));
//return out;
}
*“我应该选哪个选项?”*在您的真实世界条件下测试结果并选择能够为您提供最佳结果的结果。 –
感谢T.J.Crowder的回复。但在我的本地m/c中,我没有那么多的记录。我只有3200条记录,因此我必须在这些记录中进行选择。 –
记录可以*创建*。或者你可以重复通过你拥有的3200。 –