Проблема производительности с getInt в ResultSetExtractor

У меня проблема с производительностью при вызове getInt внутри ResultSetExtractor. GetInt вызывается 20000 раз. Стоимость одного вызова 0,15 мс, общая стоимость 24 секунды, при работе внутри профилировщика. Выполнение операторов SQL занимает около 8 секунд (доступ по первичному-ключу). Я использую версию драйвера 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 вызывается метод getIntWithOverflowCheck, который кажется дорогим. Можно ли отключить эти проверки?

6
задан martin s 9 April 2012 в 20:01
поделиться