美文网首页
探究关闭JtdsResultSet耗时长的问题

探究关闭JtdsResultSet耗时长的问题

作者: 血色彼岸花_703d | 来源:发表于2018-12-21 17:22 被阅读0次

问题描述

做项目时,偶然碰到的一次关闭ResultSet时特别慢,经过一些列排除,仅当我对SqlServer操作时出现的问题。因为连接Sqlserver使用的是Jtds驱动,主要是为了设置网络超时间,官方的Sqlserver是无法设置的。使用PrepareStatement进行查询,返回结果是ResultSet,此次查询的数据量很大,大概3000万条数据,在未对结果集中的数据进行遍历时,因为业务场景中另一部分出现问题,现在需要关闭ResultSet,此时调用close()方法。按照正常的情况,Resultset会立即被释放,并不会消耗很长时间,但由于使用的是jtds驱动,会调用ResultSet的子类JtdsResultSet中的close()方法。

JtdsResultSet.close()实现


public void close() throws SQLException {
    if (!this.closed) {
        try {
            if (!this.getConnection().isClosed()) {
                while(true) {
                    if (this.next()) {
                        continue;
                    }
                }
            }
        } finally {
            this.closed = true;
            this.statement = null;
        }
    }
}

从上述代码中可以看出当JtdsResultSet.close()时,会遍历剩余的所有结果集,这需要耗费相当多的时间和资源进行处理,显然这种设计缺陷性很大,而且与官方对关闭ResultSet的解释有所冲突。

总结

目前暂无特别好的方法来处理这种因jtds驱动所引发的ResultSet关闭耗时的问题,期待官方解决,或者不使用jtds驱动。

相关文章

  • 探究关闭JtdsResultSet耗时长的问题

    问题描述 做项目时,偶然碰到的一次关闭ResultSet时特别慢,经过一些列排除,仅当我对SqlServer操作时...

  • js关闭页面探究

    js关闭页面的四种方法: ================重点=================如果是通过输入地址...

  • 我的舞蹈梦

    时长:两个星期 任务:①吊腰三组。每组60秒 ②耗右腿两组...

  • netty手动关闭资源的探究

    最近突然得知自己的基础差,与精英的标准相距甚远。的确,平时的工作中,有太多机会允许我运用“基础”以外的东西去完成。...

  • 2020-11-06

    01.基于5e教学,用于实验探究 初中制作类实验米酒和酸奶。耗时长。 放课前完成,群接龙软件。总结异常现象。 探究...

  • 简书怎么了?

    这几天每次打开简书,总会弹出各种广告,有游戏的、购物平台的…………,关闭这些时一不小心就打开了,再去关闭它们又要耗...

  • 探究的问题(一)

    情景:我成为了妹妹(小学)班的教师,我会如何选择教她们课? 首先,对于自己教师的定位,把自己当成她们小朋友的一员,...

  • 《语文教学之学理》读书笔记三

    “问题情境”中的探究学习 (问题情境即真实的问题情境) 作者介绍了“问题情境”中探究学习的三种教学模式:基于问...

  • jmeter3.x线程组时间控制规则

    一.按次数循环,无法计算时长 二.持续循环启打开,分是否使用调度器两种情况: 1.调度器关闭 - 无限循环,时长无...

  • 语音助手的TTS设计需要注意哪些细节

    1、该短时短,该长时长 执行指令“关闭音乐”,只需简单的回复一句“好的”即可,因为声音的关闭能够给到用户明确的反馈...

网友评论

      本文标题:探究关闭JtdsResultSet耗时长的问题

      本文链接:https://www.haomeiwen.com/subject/pelvkqtx.html