开启一个JAVA事务,第一个SQL语句数据量少,做了查询后并写进文件,再把数据UPDATE后,导入到另一个表(完成)。现在第二个SQL语句是查询另一个表,大概有150万条记录,然后把这记下写进另一文件中,再把数据UPDATE后,导入到另一个表。这些都在一个事务里面。但现在在第二个SQL语句执行时。由于量比较大。可能会等很长时间,但WEB界面出现SESSION失效了。操作员就重新登录了。现在出现问题是没有把第一个SQL语句的相关操作回滚。有没有人碰到JAVA的这种情况。现在发现,第一个SQL语句的数据文件生成了。而且也移到另一个表了。为何不回滚呢,谁能解释一下嘛,我估计是停在第二条SQL查询语句上。请高手帮忙解释一下。有什么别的好办法解决嘛。
2.肯定要提高 第二条SQL查询的效率,
3.如果事务出错,是否有文件删除的处理?? 我觉得如果回滚,文件也要删除。
还有是否有可能从业务上分解一下 比如把 写库和写文件 分开来做 毕竟事务只对写库有用 对文件是回滚不了得 建议数据库操作成功后 再来写文件。事务是为了保证数据库内数据的一致性,因为数据库是关系型的 数据是相互关联 影响的 事务时很必要的,文件应该是独立的 没有这么高的要求把。
比如,我用flex调用一个后台的service,如果涉及到数据库操作必然在事务中进行,
如果此时,session过期,页面跳转,即便原来service执行正常,可是找不到正常处理的后续操作,也就无法走到下一步。锁表,要么手动锁,要么发生表更新,但是事务回滚/提交后,就不会锁表了,除非2个事务发生死锁,可以看看这篇文章http://baike.baidu.com/view/121723.htm