Spring MyBatis很慢

Spring MyBatis很慢,spring,mybatis,Spring,Mybatis,我想知道为什么MyBatis在我的应用程序中很慢 对于选择计数(*),所用时间为: 20秒-第一次请求 2-3秒-后续请求 缓存很可能会加快后续请求的速度 配置 3层(WPF用户界面-Java后端-Oracle数据库) JBoss服务器将Java作为WPF UI的Web服务公开 请求时间==WPF UI发送和接收结果之间的时间 正在使用Spring Framework 尝试过的方法 禁用日志记录 我不知道禁用日志子系统和log4j是否有区别;但是,对于SELECT COUNT(*),我得到的

我想知道为什么MyBatis在我的应用程序中很慢

对于
选择计数(*)
,所用时间为:

  • 20秒-第一次请求
  • 2-3秒-后续请求
  • 缓存很可能会加快后续请求的速度

    配置
    • 3层(WPF用户界面-Java后端-Oracle数据库)
    • JBoss服务器将Java作为WPF UI的Web服务公开
    • 请求时间==WPF UI发送和接收结果之间的时间
    • 正在使用Spring Framework
    尝试过的方法
  • 禁用日志记录

    我不知道禁用日志子系统和log4j是否有区别;但是,对于
    SELECT COUNT(*)
    ,我得到的最好成绩是15秒

  • 禁用缓存和延迟加载

    这也可能造成最多5秒的差异

  • 以下步骤有帮助吗?
  • 通过关闭自动映射,使用显式的结果映射。(参见结果图)
  • 使用。(见环境)
  • 事务是否有助于通过子查询加快SQL语句的速度
  • 以下列出了上述技术:

  • (第9页)
  • 另一个例子 对于包含2个联接和1个子查询的嵌套SQL语句,所用时间为:

  • 60-90秒-首次请求
  • 2-3秒-后续请求

  • 我把问题解决了!MyBatis现在需要的查询时间与直接针对数据库运行的查询时间相同

    这是N+1选择问题(描述得很好)

    解决方案 嵌套结果(与嵌套选择相反),这也在上面提到的同一页中描述

    使用4个连接对我的SQL查询造成的影响是巨大的:

    • 之前:38秒
    • 之后:3秒

    我通过将问题隔离到MyBatis Spring(删除JBoss部分)周围的一个JUnit测试用例来跟踪问题。

    您是否看到类似的行为直接在数据库上运行相同的查询?@AngerClown当我直接查询时,响应非常快。对于
    SELECT COUNT(*)
    ,大约是0.3秒;对于包含2个连接和一个子查询的查询,大约是1.5秒。