在一个项目中,使用了mybatis,在实验环境中一切正常,在正式环境中数据库量比较大,出现查询慢的情况,是特别慢,但生成的sql在pl/sql中并不慢。困扰了很久(现在也没有完全解决),后来发现是mybatis在生产内部SqlSession时特别耗时(具体原因不明)。将sql配置中部分的#改为$,生产SqlSession就很快了。
在mybatis中使用#相当于jdbc中的?,使用$相当于最直接拼写sql。使用?,不管器参数怎么变,都可以重复利用数据库对sql的分析。可能是这个sql分析过程导致SqlSession生成特别慢。
只说了现象,和初略的解决方式。做个记录,水平高了再分析原因。

在项目中使用MyBatis时,遇到数据库量大导致查询慢的问题,尤其在生产环境中,发现是MyBatis内部SqlSession生成耗时严重。通过将#替换为$来优化,使得生产环境中的SqlSession生成速度得到显著提升。文章记录了这一现象、初步解决方式及可能的原因分析。
6865





