gpt4 book ai didi

spring - MyBatis 很慢

转载 作者:行者123 更新时间:2023-12-04 23:25:52 27 4
gpt4 key购买 nike

我想知道为什么 MyBatis 是 在我的应用程序中。
对于 SELECT COUNT(*) ,所用时间为:

  • 20 秒 - 第一个请求
  • 2-3 秒 - 后续请求

  • 缓存很可能使后续请求更快。
    配置
  • 三层 (WPF UI - Java 后端 - Oracle 数据库)
  • JBoss 服务器将 Java 支持作为 WPF UI 的 Web 服务公开
  • 请求时间 == WPF UI 发送和接收结果之间的时间
  • Spring 框架 正在使用

  • 尝试的方法
  • 禁用日志记录
    我不知道禁用日志子系统和 log4j 是否会有所不同;但是,我得到的最好的结果是 SELECT COUNT(*) 的 15 秒.
  • 禁用缓存和延迟加载
    这也可能最多产生 5 秒的差异。

  • 以下有帮助吗?
  • 使用显式 结果映射 , 通过关闭自动映射。 (参见结果图 here)。
  • 使用 共享 . (参见环境 here)。
  • 交易使用 帮助加速 SQL 语句子查询 ?

  • 此处列出了上述技术:
  • MyBatis forums
  • JBoss Best Practices (第9页)

  • 另一个例子
    对于具有 2 个连接和 1 个子查询的嵌套 SQL 语句,所用时间为:
  • 60-90 秒 - 第一个请求
  • 2-3 秒 - 后续请求
  • 最佳答案

    我解决了问题! MyBatis 现在查询的时间与直接针对数据库运行的时间相同。
    它是 N+1 选择问题 (很好地描述了 here )。
    解决方案
    嵌套结果 (与 嵌套选择 相反),这也在上面提到的同一页面上进行了描述。
    它对我的 4 个连接的 SQL 查询产生的影响是巨大的:

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

  • 我通过将问题隔离到 来追踪问题。 JUnit 围绕 MyBatis-Spring 的测试用例(删除 JBoss 部分)。

    关于spring - MyBatis 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072363/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com