mybatis 高并发查询性能问题

场景: 使用Mybatis (3.5.10)@SelectProvider注解执行动态sql 在高并发查询时 QPS 很低

问题复现

  • mybatis 配置 (getOfflineConfigSqlTemplate 该方法返回的是动态sql )
    在这里插入图片描述

  • 压测结果

mybatis 高并发查询性能问题_第1张图片

  • 观察线程阻塞情况
    mybatis 高并发查询性能问题_第2张图片

  • 此时的QPS 在 80 左右

通过测试结果发现是mybatis 框架的问题 。使用原生的jdbc 连接池执行 ,对代码进行简单改造如下

  • 将注解执行sql 逻辑 换成 jdbc 连接池方式
    mybatis 高并发查询性能问题_第3张图片

  • 相同压力相同资源下 再次进行压测 观察结果 :

  • 线程无阻塞
    mybatis 高并发查询性能问题_第4张图片

  • QPS 从80 提升至 460

结论 : mybatis 动态sql 适合在非高并发查询场景下使用 。

你可能感兴趣的:(mybatis,java,HikariCP,高并发)