更新时间:2024-11-27 GMT+08:00
性能问题
在processResult阶段耗时
设置loglevel=3,打开JDBC日志,主要耗时在processResult阶段,可分为两种情况:
- JDBC端等待数据库返回的报文时间过长。
问题分析:用户可查看FE=> Syncr日志和<=BE ParseComplete日志之间的时间间隔,如果时间间隔较久,则判断为数据库执行慢。
处理方法:分析SQL执行慢的原因,详情可参见SQL执行很慢,性能低,有时长时间运行未结束。
- 结果集过大,一次性全部加载,消耗大量时间。
问题分析:查看日志,如果<=BE DataRow日志出现次数过多,或直接执行SELECT count(*);查询结果数目过大,则判断为结果集过大。
处理方法:设置fetchSize参数为一个较小的值,使数据按批次返回,客户端得到快速响应。
1
statement.setFetchSize(10);
在modifyJdbcCall和createParameterizedQuery阶段耗时
问题分析:如果主要耗时在modifyJdbcCall阶段(校验传入的SQL是否符合规范)和createParameterizedQuery阶段(将传入的SQL解析为preparedQuery,以获取由simplequery组成的subqueries),则需要确认是否传入的SQL过长导致。
处理方法:JDBC本身没办法优化这部分耗时,可在应用端查看是否可优化传入的SQL语句,详情可参见SQL语句改写规则。
父主题: JDBC/ODBC类