线上的系统中,使用的是Spring+Mybatis+Mysql搭建的框架,由于客户需要,最近一直在对性能提升部分进行考虑,主要是涉及Mysql的一些重要参数的配置学习,以及Spring事务管理机制的学习,因为通过观察服务器日志,发现在这两部分的时候耗时比较严重,特别是进行mysql事务提交的时候,项目源码中使用了Spring的声明式事务,即通过@Transactional注解来控制事务的开启与提交,这两天看了一些关于Spring Transaction事务的一些文章,也debug了源码,总算有点心得和疑问,这里简单的整理一下。
在Spring的配置文件中,我们使用了"org.springframework.jdbc.datasource.DataSourceTransactionManager"对事务进行管理,翻开DataSourceTransactionManager的源码,我们看到DataSourceTransactionManager继承了AbstractPlatformTransactionManager(抽象的事务管理器),DataSourceTransactionManager重写了其中的一些方法,具体每个方法的作用,限于篇幅,本文不再赘述,这里《Spring技术内幕》学习笔记16——Spring具体事务处理器的实现有详细的介绍。
在现有的项目中,我们在public方法上面使用了@Transactional注解,当有线程调用此方法时,Spring会首先扫描到@Transactional注解,进入DataSourceTransactionManager继承自AbstractPlatformTransaction

本文探讨了Spring+MyBatis+Mysql系统中遇到的事务处理问题,包括Spring的声明式事务管理,以及在多线程并发时遇到的事务检查、设置autoCommit、获取连接和提交事务的性能问题。作者分析了Spring的DataSourceTransactionManager源码,提出了四个疑问点,并尝试理解事务管理与SqlSession的交互过程。
最低0.47元/天 解锁文章
559

被折叠的 条评论
为什么被折叠?



