一次在生产环境很诡异的问题,一天晚上两点数据库因为资源用尽,进而卡死崩溃,查看了代码,发现代码并没有问题,dba在数据库中排查问题时,发现某段sql一直在占用连接,而未释放,时间长达40多秒,并且在该语句查询不到数据时,竟然也执行时间长达10几秒。后面经过排查分析,发现使用for update语句时,会默认开启事务,若没有使用声明式事务对事物进行终结,那么改事务就会一直开启,方法提交事务也不会终结,因此,若遇到事务未终结问题,先排查在哪里事务会开启。