Java 使用spring在myBatis中缓慢关闭SqlSession

Java 使用spring在myBatis中缓慢关闭SqlSession,java,spring,mybatis,Java,Spring,Mybatis,我和迈巴蒂斯有麻烦。在spring中启用事务管理器后,我发现事务性方法(甚至非事务性方法)的性能严重下降: <tx:annotation-driven transaction-manager="transactionManager"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="u

我和迈巴蒂斯有麻烦。在spring中启用事务管理器后,我发现事务性方法(甚至非事务性方法)的性能严重下降:

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="url" value="${database.url}"/>
    <property name="driverClassName" value="${database.driver}" />
    <property name="username" value="${database.user}" />
    <property name="password" value="${database.password}" />
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="typeAliasesPackage" value="com.company.model" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.company.mapper" />

</bean>
数据库:Oracle 11.2
谢谢。

原因很愚蠢。这是数据库退化。

原因很愚蠢。这是数据库降级。

您使用的是基本CDATA源。如果您担心性能,我会考虑连接池。有不同的库可以帮助实现这一点,本文解释了使用c3p0,但它可能有点过时。我应该给你这个主意。我已经打开了BoneCP作为池数据源,但mybatis是任何调用都会依次选择的,在事务之间有很大的延迟。我不会将150ms称为大延迟。每个请求使用多少事务?如果每个select都有一个单独的事务,那么150ms可能开始累加,但您可能应该将它们合并到一个事务中。您使用的是BasicDataSource。如果您担心性能,我会考虑连接池。有不同的库可以帮助实现这一点,本文解释了使用c3p0,但它可能有点过时。我应该给你这个主意。我已经打开了BoneCP作为池数据源,但mybatis是任何调用都会依次选择的,在事务之间有很大的延迟。我不会将150ms称为大延迟。每个请求使用多少事务?如果每个select都有一个单独的事务,那么150ms可能开始累加,但您可能应该将它们合并到一个事务中。
09:28:58.134 [http-bio-9081-exec-12] DEBUG o.m.s.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@cf80c3]
09:28:58.297 [http-bio-9081-exec-3] DEBUG o.m.s.SqlSessionUtils - Creating a new SqlSession