首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MyBatis非常慢

MyBatis非常慢
EN

Stack Overflow用户
提问于 2012-10-25 15:47:16
回答 1查看 13.2K关注 0票数 4

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

对于一个SELECT COUNT(*),所花费的时间是:

  1. 20秒-第一次请求
  2. 2-3秒-随后的请求

缓存很可能使后续请求更快。

配置

  • 3层 (WPF Java后端- Oracle数据库)
  • JBoss Server将支持的公开为WPF用户界面的Web服务
  • 请求时间 ==时间在WPF用户界面发送和接收结果之间的时间
  • 正在使用的Spring框架

尝试过的方法

  1. 禁用日志记录 我不知道禁用日志子系统和log4j是否有什么区别;但是,我得到的最好结果是SELECT COUNT(*)的15秒。
  2. 禁用缓存和延迟加载 这也可能造成最多5秒的不同。

有以下帮助吗?

  1. 使用显式结果映射,关闭自动映射.(请参见结果地图这里)。
  2. 使用。(请参阅环境这里)。
  3. transactions是否有助于加速使用子查询的SQL语句?

以下列出了上述技术:

  1. MyBatis论坛
  2. JBoss最佳实践 (第9页)

另一个例子

对于具有2个联接和1个子查询的嵌套SQL语句,所需时间为:

  1. 60-90秒-第一次请求
  2. 2-3秒-随后的请求
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 15:55:48

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

它是N+1 selects (很好地描述了这里)。

解决方案

嵌套的结果(相对于嵌套的选择),在上面提到的同一页中也有描述。

它对使用4个联接的SQL查询产生了巨大的影响:

  • 以前: 38 s
  • 后:3 s

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13072363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档