`
greemranqq
  • 浏览: 966060 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

jdbc 大数据量下载

阅读更多

1.背景:

          常见数据应用里面会有数据下载功能,当数据量比较大的时候,用JDBC 不对参数处理,容易OOM

 

2.原因:

          基本的Connetion 做查询,ResultSet 会将数据全部拉到内存再进行遍历,所以容易OOM

 

3.当我们查询的时候利用

   

PreparedStatement ps = connection.prepareStatement(sqlText,ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

// 拉到多少就行处理
ps.setFetchSize(1);

// ResultSet.TYPE_FORWARD_ONLY,1003 1004 1005 
// TYPE_FORWARD_ONLY一般是默认,不同数据库有差异。具体解释自己网上看

// 用的pg数数据库,关闭自动提交才会生效
 connection.setAutoCommit(false);

 

 

4.关于配合spring+ibatis:

          

// SqlSessionFactory 里面有 
SqlSession openSession(boolean autoCommit);

// 实际实现:
// SpringManagedTransactionFactory 
 @Override
  public Transaction newTransaction(DataSource dataSource, 
  TransactionIsolationLevel level, boolean autoCommit) {
    return new SpringManagedTransaction(dataSource);
  }

// 发现并没有使用到autoCommit
// 因此手动设置了才生效,这里其实不太明白,为啥这里只用2个参数
// ibatis 版本,1.3.2  spring-cloud 2.0 
SqlSession sqlSession = sqlSessionFactory.openSession()
sqlSession.getConnection().setAutoCommit(false);

 

 

 

5.不同的数据库、版本之间有差异,要再看看,多测试一下

 

 

6. 小结:

      1. 历史经验不一定可靠,得自己测试才知道

      2.仅仅简单记录一下,有问题可以留言指出

分享到:
评论

相关推荐

    软件测试中使用JDBC插入大量数据的性能测试

    jdbc数据软件测试中使用JDBC插入大量数据的性能测试使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:1、使用statement插入100000条记录...

    达梦数据量驱动jar包(16版本),DM7jdbcDriver16驱动

    达梦数据量驱动jar包(16版本),DM7jdbcDriver16驱动,不同版本有比同配置, 大小写不敏感: 表对象小写:如果想要迁移过来表对象仍然保持小写,需要勾选“保持对象名大小写”,后期查询时,不需要使用双引号查询 表...

    java servlet+jsp+jdbc商城源码(含数据库,大量商品数据)

    java servlet+jsp+jdbc商城源码(含数据库,大量商品数据) 项目描述 有部分难点全面注释,对于新手还是有很大的帮助,有支付宝接口实现支付功能,需要自行注册支付宝开发平台配合沙箱环境来实现支付功能,第一次搞这...

    基于SpringBoot+hiveJDBC+echarts的数据大屏可视化和大数据分析源码+项目使用说明.zip

    通过大数据分析,生成有价值数据:每日订单量走势,前10销售品牌,哪里人最爱美等。 【技术栈】 Java-1.8 Hive-3.1 Hadoop-3.2.0 HiveJDBC: 通过Java直接访问Hive数据库 HiveServer2:使远程客户端可以执行对Hive的...

    camel-JDBC

    使用Apache Camel加Maven实现JDBC的增删改查操作,已测试通过,下载后修改数据源信息即可!

    使用JDBC插入大量数据的性能测试

    使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试:1、使用statement插入100000条记录  使用jdbc向数据库插入100000条记录,分别使用...

    轻量级的java数据源jdbc框架

    非常小巧的基于c3p0数据源和纯java的jdbc原生写的数据源框架,支持多数据源连接,mysql,oracle,sqlserver等等。方便小巧,侵入性低,与任何框架都易于集成和使用。

    如何避免JDBC引起的内存溢出情况

    有的时候,我们需要一次查询很多的数据,或者是说每次查询的数据量都很大,都有可能早晨内存溢出的情况,所以我们今天分别针对三个数据库来探讨如何避免这一问题。

    jdbc连接数据库的方式2

    二、JDBC连接MySql方式 下面是使用JDBC连接MySql的一个小的教程 1、查找驱动程序 MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此...

    sharding-jdbc数据分片

    针对单表数据量大导致的查询缓慢问题进行数据分片从而达到性能优化效果。代码罗列了针对springboot形式的各种分片策略,以及性能对比测试方法。

    jdbc工具类

    基于jdbc的封装,轻量级映射,自带连接池,无第三方依赖。支持多数据源,配置简单,支持注解sql查询,自带分页查询。

    JDBC工具包MidaoJDBC.zip

    Midao JDBC 简化了 JDBC 的开发,特点是灵活、可定制、简单直观,提供大量的功能,包括事务处理、元数据操作、类型处理、检视、输入输出处理和转化,带连接池的数据源支持;缓存和懒查询执行;命名参数;多供应商...

    构造大量测试数据的方法(MySql)

    构造大量测试数据的方法(MySql):一存储过程,二多线程 + jdbc批量提交。

    JDBC的批量处理数据

    NULL 博文链接:https://wangyaweinihao.iteye.com/blog/2326293

    当当网 高洪涛 Sharding-JDBC PPT分享

    Sharding-JDBC是一个开源的适用于微服务的分布式数据访问基础类库,它始终以云原生的基础开发套件为目标。 Sharding-JDBC定位为轻量级java框架,使用客户端直连数据库,以jar包形式提供服务,未使用中间层,无需...

    mysql-jdbc驱动 jar包

    mysql-jdbc驱动 jar包,支持Jmeter链接数据库获取资源数据,避免大量造数据问题

    jdbc+mysql工具类

    这是jdbc 批处理输入大量数据到mysql的代码,应该会比较有用

    利用poi获取excel数据批量插入大量数据到mysql

    该资源主要实现如下功能,利用poi获取excel中大量数据,然后利用jdbc批量插入到mysql

    jsp分页JDBC实现

    使用Hibernate之前,jsp分页有好多不同的方法,本实例是笔者自己编写的jdbc实现分页的,不会受到数据量大的限制,简单易懂....

    java实现jdbc查询结果集result转换成对应list集合

    本文给大家汇总介绍了java实现jdbc查询结果集result转换成对应list集合,十分的简单,有相同需求的小伙伴可以参考下。

Global site tag (gtag.js) - Google Analytics