Home  >  Article  >  Database  >  关于oracle与mysql官方jdbc的一些区别

关于oracle与mysql官方jdbc的一些区别

WBOY
WBOYOriginal
2016-06-07 15:14:241204browse

默认为从服务器一次取出所有数据放在客户端内存中, fetch size 参数不起作用,当一条 SQL 返回数据量较大时可能会出现 JVM OOM 。 要一条 SQL 从服务器读取大量数据,不发生 JVM OOM ,可以采用以下方法之一: 1 、当 statement 设置以下属性时,采用的是流

默认为从服务器一次取出所有数据放在客户端内存中,fetch size参数不起作用,当一条SQL返回数据量较大时可能会出现JVM OOM



要一条SQL从服务器读取大量数据,不发生JVM OOM,可以采用以下方法之一:



1、当statement设置以下属性时,采用的是流数据接收方式,每次只从服务器接收部份数据,直到所有数据处理完毕,不会发生JVM OOM

          setResultSetType(ResultSet.TYPE_FORWARD_ONLY);

          setFetchSize(Integer.MIN_VALUE); 

 

2、调用statementenableStreamingResults方法,实际上enableStreamingResults方法内部封装的就是第1种方式。

3、设置连接属性useCursorFetch=true (5.0版驱动开始支持)statementTYPE_FORWARD_ONLY打开,再设置fetch size参数,表示采用服务器端游标,每次从服务器取fetch_size条数据,注意这种方式会大量占用服务器的临时空间,一般比较少用。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Hack 2Next article:mysql之学习秘籍