java – ResultSetExtractor中getInt的性能问题

前端之家收集整理的这篇文章主要介绍了java – ResultSetExtractor中getInt的性能问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在ResultSetExtractor中调用getInt时遇到了性能问题. GetInt被称为20000次.一次通话费用为0.15毫秒,总体成本为24秒,同时在探查器内部运行.执行sql语句大约需要8秒钟(通过Primary-Key访问).我使用mysql驱动程序版本5.1.13,MysqL服务器5.1.44和spring-jdbc-3.1.1
你有想法提高性能吗?

    mut.getMutEffect()[0]=(rs.getInt("leffect_a") != 0);
    mut.getMutEffect()[1]=(rs.getInt("leffect_c") != 0);
    ...
    mut.getMutEffect()[19]=(rs.getInt("leffect_y") != 0);
    mut.getMutReliability()[0]=rs.getInt("lreliability_a");
    ...
    mut.getMutReliability()[19]=rs.getInt("lreliability_y");

我的计划看起来像这样

CREATE TABLE mutation (
 ...
 leffect_a BIT NOT NULL,lreliability_a TINYINT UNSIGNED NOT NULL,...
 leffect_y BIT NOT NULL,lreliability_y TINYINT UNSIGNED NOT NULL,...
) ENGINE=MyISAM;

编辑:在getInt中调用methode getIntWithOverflowCheck,这看起来很昂贵.是否有可能完成这项检查?

最佳答案
以下是一些建议:

>将获取大小设置为相当大的数字:Statement.setFetchSize().这将减少处理结果集时到数据库服务器的往返.
>通过分析确保select语句是最佳的
>一般表格优化,例如你使用正确的数据类型?看起来您可以将leffect_a更改为BOOLEAN
>确保您没有在SELECT语句中返回任何不必要的列.
>使用PreparedStatement
>避免使用可滚动和可更新的结果集(两者都不是默认值)

猜你在找的Spring相关文章