文档章节

代码中的事务无法回滚

buglife
 buglife
发布于 2014/10/29 13:37
字数 469
阅读 676
收藏 4

问题来源

有一小伙伴,事务提交是加在方法级上的。并且方法里写了几个更新数据库表的操作。然而当数据前几个顺利执行通过后,发现最后一个操作并未通过。按照一般的事务管理规则,此刻是应该触发事务回滚的。然而并没有触发,前两次操作成功地写入了数据库,最后一次失败告终。

问题追踪

项目大体是使用mysql数据库,管理事务是在spring中完成。其实这里跟开发语言没有任何关系,无论使用什么语言什么框架,都有可能遇到此类问题。分别以下述步骤进行了一番分析:

  1. 查看源码,发现没有逻辑错误

  2. 比对其他方法,业务异常

  3. 到目前为止只能怀疑数据库了

    1. 查看数据库的配置也无什么异常分别是InnoDB以及utf-8编码

    2. 比对操作的表,发现出错的表里使用的引擎(engine)是MyISAM,跟其他表的不一样

结论

mysql一共提供了两种引擎(engine),即InnoDB和MyISAM。查看两种引擎的区别不难发现:

  • InnoDB supports transactions which is not supported by tables which use MyISAM storage engine.

  • InnoDB has row-level locking, relational integrity i.e. supports foreign keys, which is not possible in MyISAM.

  • InnoDB ‘s performance for high volume data cannot be beaten by any other storage engines available.

另外还有一个分析对比,选择合适的引擎:

                                             My ISAM    InnoDB
Required full text Search                      Yes       5.6+
Require Transactions                                     Yes
frequent select queries                        Yes      
frequent insert,update,delete                            Yes
Row Locking (multi processing on single table)           Yes
Relational base design                                   Yes


© 著作权归作者所有

buglife

buglife

粉丝 81
博文 126
码字总数 44248
作品 4
浦东
架构师
私信 提问
别使用嵌套事务

公司之前一直存在一个规范,就是禁止嵌套事务的使用,一直不太明白为什么,试了下应该是无法控制回滚,今天看大牛的博客发现,问题远远不只如此。 具体总结下来是以下3个问题 1、内层事务回滚...

买个ZIPPO点蚊香
2016/01/06
156
0
关于JFinal事务回滚的几个问题

最近迷上JFinal,想在手上的项目中使用,无奈在事务方面遇到一些问题,还请各路高手指教。(我用的是传说中加了特效的JFinal 2.0) 问题一:在使用声明式事务(@Before(Tx.class))的情况下,如...

AntonioChen
2015/09/03
999
3
添加@Transactional ------spring boot中session中断的问题及其解决

近期做收益项目,大规模使用spring的定时任务,然一些错误如Null Session,Not Proxy.代码无法应用. 前段时间查了下,发现一些解决方案.主要是查询之后session已经关闭,最佳方案是修改session的作...

流光韶逝
2016/11/23
43
0
@Transactional配置(springmvc+mybatis)

1.spring-mybatis.xml加入配置 <!-- 配置事务管理器 --><bean id="transactionManager" </bean> <tx:annotation-driven transaction-manager="transactionManager" /> 2.实例 1)Dao层 User......

warlockssss
2016/09/18
24
0
spring做的事务service层的回滚机制

各位大佬,问个问题。 项目是ssm架构,事务切面表达式对service层做了事务 现在有一个问题,我在service的代码出现异常,应该是事务要做回滚,可我们这个系统很不规范,很多东西都写在了控制...

sprouting
2017/05/30
2.7K
11

没有更多内容

加载失败,请刷新页面

加载更多

Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
58分钟前
1
0
增加 PostgreSQL 服务进程的最大打开文件数

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7 要在systemd的配置里加才行...

helloclia
今天
2
0
组合模式在商品分类列表中的应用

在所有的树形结构中最适合的设计模式就是组合模式,我们看看常用商品分类中如何使用。 先定义一个树形结构的商品接口 public interface TreeProduct { List<TreeProduct> allProducts(...

算法之名
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部