【发布时间】:2017-04-09 21:11:24
【问题描述】:
您好,我正在尝试从 MYSQL DB 中的一个表中获取 50K + 行。检索所有数据并将其写入文本文件需要 20 多分钟。我可以使用多线程来减少此获取时间并使代码更高效吗?任何帮助将不胜感激。
我已经使用正常的 JDBC 连接和 ResultSetMetaData 从表中获取行。
String row = "";
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employee_details");
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while (rs.next()) {
for (int i = 1; i < columnCount; i++) {
row = row + rs.getObject(i) + "|";// check
}
row = row + "\r\n";
}
我正在将获取的值写入文本文件,如下所示。
BufferedWriter writer = new BufferedWriter(new FileWriter(
"C:/Users/430398/Desktop/file/abcd.txt"));
writer.write(row);
writer.close();
【问题讨论】:
-
我认为多线程根本不会加快速度。想想瓶颈在哪里和是什么——穿线会影响这个吗?
-
但是尝试一下看看会发生什么并没有什么坏处——你在实验中发现了什么?
-
我尝试使用简单的 JDBC 连接和结果元数据来获取值。需要 20 分钟。我不确定多线程是否可以在这里工作
-
再说一次,我不这么认为,因为瓶颈我相信是从磁盘获取数据,我看不出线程将如何加速起来,但让我们看看专家们怎么说。
-
请查阅SELECT INTO OUTFILE
标签: java mysql multithreading