作者slalala (WIKI大学生写作业的题材)
看板java
标题[J2SE]资料库新增几万笔资料
时间Wed Jul 2 13:02:24 2008
标题虽然是J2SE
不过却是JSP/SERVLET的应用 ( ̄□ ̄|||)a
因为如果在jsp显示上会有timeout等等的问题
所以有些疑问
目前程式流程大概是这样(程式码还没写 大概写一下假码 ,SET不是java.util的Set)
DO
SET SQL= SQL Command;
SET ResultSet = executeQuery(SQL) //从资料库取资料
WHILE( ResultSet.next() ) //大概两万多笔
BEGIN
SET DATA = ResultSet.getData() //从资料库取得资料
DATA = DoSomeThing( DATA) //处理资料
Statement.Insert(DATA ) //新增到资料库其他栏位
END
END
以上这样的程式 我估计 大概要跑个几分钟
之前的经验是用批次的方式结果会好很多
就假码WHILE结束之後才执行statment.executeBatch()
现在的疑问就是:
要是一次两万多笔 这些资料在executeBatch之前
都暂存在记忆体吧
这样要是资料量很大的时候 不就可能有爆炸的问题?!
我现在的想法是
在ResulteSet的回圈内计数
当到达特定的mod值(ex:100、1000)
就执行executeBatch()与clearBatch()
不知道这样的想法对不对?!
还是有更好的作法??
另外timeout的问题
我是想实作官方网站有教的JProgressBar
或者是乾脆写成Thread
将页面显示跟SQL执行批次的程序分开
不知道这样可行吗?
(只担心有Thread-safe的问题 我JAVA很多观念很粗浅ˋ(′_‵||)ˊ)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.146.161
1F:推 superlubu:Thread 可行,因为我有做过这种事 XD 07/02 13:12
2F:→ slalala:想请问一下THREAD有没有"後遗症"??!! 07/02 13:15
3F:推 superlubu:如果写的好,没有後遗症,写的不好,Vector 也有後遗症 07/02 14:10
4F:→ slalala:换句话说~"~有没有什麽该注意的? 07/02 15:32
5F:推 nike4859:thread如果是多人使用,会不会有资料冲突的问题? 07/04 17:13
6F:→ slalala:可以先LOCK住资料库吧?! 07/05 01:11