gpt4 book ai didi

java - ResultSetExtractor 中 getInt 的性能问题

转载 作者:可可西里 更新时间:2023-11-01 06:50:22 26 4
gpt4 key购买 nike

我在 ResultSetExtractor 中调用 getInt 时遇到性能问题。 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 方法,这似乎很昂贵。是否可以取消此支票?

最佳答案

这里有一些建议:

  • 将获取大小设置为一个相当大的数字:Statement.setFetchSize() .这应该减少处理结果集时到数据库服务器的往返次数。

  • 通过分析确保 select 语句是最优的

  • 常规表优化,例如您使用的是正确的数据类型吗?看起来您可以将 leffect_a 更改为 BOOLEAN

  • 确保您没有在 SELECT 语句中返回任何不必要的列。

  • 使用 PreparedStatement

  • 避免使用可滚动和可更新的结果集(两者都不是默认设置)

关于java - ResultSetExtractor 中 getInt 的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com