问题描述:小囧事(1)中做查询时hibernate智能的做了update,此时多次快速的提交查询请求时导致数据库短暂的等待锁,当无限制的快速提交N次之后,Hibernate报数据库连接异常(不能从池中获得一个连接)。
问题思考:提交查询请求时候由于setter方法的问题导致Hibernate自动update,而update相对来说还是比较慢的,再还没有update结束的时候多次提交了请求,这样就会导致前一次update还未来得及提交事物而又一次update又来了,如此恶性循环最终导致每一次的update都锁着数据库。当过一段时间不再提交的时候程序会往后执行到commit,若有一个update被提交并解锁,则相应的等待锁都会一一解锁。等待锁的另一个原因可能是使用spring mvc是单例,所有请求都只有一个Controller,所以造成前一次请求未完成而又来一次请求时程序不能继续执行到事物提交那一步。若struts2.0可能不会出现这样的问题。
至于hibernate报连接池异常暂时还没想好。
NND,这个bug还蛮严重的。不小心会导致数据库锁住。,也不知道想的对不对,瞎扯一通。
开发中的小囧事(2)——做查询操作时会打印一堆update 语句,连续提交查询导致数据库等待锁
最新推荐文章于 2017-08-30 16:20:53 发布