Heim > Datenbank > MySQL-Tutorial > mysql fetch size相关问题_MySQL

mysql fetch size相关问题_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-01 13:34:50
Original
1353 Leute haben es durchsucht

bitsCN.com

mysql fetch size相关问题

 

默认情况下,MySQL的JDBC驱动会一下子把所有row都读取下来,这在一般情况下是最优 的,因为可以减少Client-Server的通信开销。但是这样也有一个问题,当数据库查询结 果很大时,特别当不能全部放进内存时,就会产生性能问题。 本来,JDBC api里在Connection、Statement和ResultSet上都有设置fetchSize的方法, 但是MySQL的JDBC驱动都不支持,无论你怎么设fetchSize,ResultSet都会一次性从Serv er读取数据。在MySQL的官方论坛上也有多个这样的问题,总结一下解决办法如下:

 

1.MySQL版本在5.0以上,MySQL的JDBC驱动更新到最新版本(至少5.0以上)

2.Statement一定是TYPE_FORWARD_ONLY的,并发级别是CONCUR_READ_ONLY(即创建Statem ent的默认参数)

 

3.以下两句语句选一即可: 

1).statement.setFetchSize(Integer.MIN_VALUE);

2).((com.mysql.jdbc.Statement)stat).enableStreamingResults(); 这样会一行一行地从Server读取数据,因此通信开销很大,但内存问题可以解决。

 

官方 的说法是不支持fetchSize不是MySQL的JDBC驱动的问题,而是MySQL本身就不支持。而商 用数据库Oracle或DB2都是支持fetchSize的,从这里也可以看出两者的考量不同。

 

bitsCN.com
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage