mar*_*n s 6 java mysql performance spring jdbc
我在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");
Run Code Online (Sandbox Code Playgroud)
我的计划看起来像这样
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;
Run Code Online (Sandbox Code Playgroud)
编辑:在getInt中调用methode getIntWithOverflowCheck,这看起来很昂贵.是否有可能完成这项检查?
以下是一些建议:
将获取大小设置为相当大的数字:Statement.setFetchSize()。这应该减少处理结果集时到数据库服务器的往返次数。
通过分析确保 select 语句是最佳的
一般表优化,例如您使用正确的数据类型吗?看来您可以将 leffect_a 更改为 BOOLEAN
确保您没有在 SELECT 语句中返回任何不必要的列。
使用准备好的语句
避免可滚动和可更新的结果集(两者都不是默认值)