我用javabean 封装了一个更新数据库的bean .
我在update 语句后先不提交,直接断掉与数据库的连接。此时另一台客户端的进程也同时提出update同一条数据的申请,那么
第二次的更新操作被挂起了。此种情况虽然说不容易发生,但也存在可能性。该如何避免呢?
对于大的事务处理过程,又该如何避免更新同一条数据的互相死锁呢?
我在update 语句后先不提交,直接断掉与数据库的连接。此时另一台客户端的进程也同时提出update同一条数据的申请,那么
第二次的更新操作被挂起了。此种情况虽然说不容易发生,但也存在可能性。该如何避免呢?
对于大的事务处理过程,又该如何避免更新同一条数据的互相死锁呢?
这种设计本身就是错误的,避免死锁要求事务尽量减小粒度,并且缩短事务的维持时间,不提交的做法本身就不对。
当然传统的有序更新的方法也可以避免交叉死锁,所以在做DML操作时,注意表的更新顺序。
注意:就算是有序更新也一样有可能挂起,缩短事务才是根本的解决方法。
每次处理成功后返回大流水号,然后commit;没有成功的话,根据大流水号delete掉,然后commit。