`
mozhenghua
  • 浏览: 324529 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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的,从这里也可以看出两者的考量不同。

分享到:
评论

相关推荐

    mysql.zip_MYSQL_mysql管理_mysql精简

    4. **处理结果**:如果查询返回结果集,可以使用`mysqli_fetch_array()`或`PDO::fetch()`遍历并处理数据。 5. **关闭连接**:完成操作后,记得使用`mysqli_close()`或`PDO::disconnect()`关闭数据库连接。 MySQL...

    mysql存储和显示图片

    while ($row = mysql_fetch_array($result)) { header('Content-Type: image/jpeg'); echo $row['Image']; } ?> ``` 这个脚本从数据库中检索特定编号的图片数据,并将其直接输出到浏览器,从而实现在Web页面上的...

    MySQL LoadRunner libraries

    在实际测试过程中,工程师会使用LoadRunner的Vuser脚本语言(LRVL)编写测试脚本,利用mysql_library中的函数进行操作,例如`mysql_connect`用于建立数据库连接,`mysql_query`用于执行SQL语句,`mysql_fetch_row`...

    mysql数据库字段复制

    MySQL数据库字段复制是一个常见的需求,尤其在数据迁移、备份或者多环境同步的场景下。PHP作为流行的服务器端脚本语言,常被用来处理这类任务。本文将深入探讨如何使用PHP来实现MySQL数据库字段的高效复制。 首先,...

    PHP实现Mysql数据库连接 (2).pdf

    "<font size='2'> Mysql_Query : " . $query . " Mysql_Error : " . mysql_error() . " Mysql Error Num : " . mysql_errno() . "</font>" . $temp_bar); return $result; } ``` 这个函数接收一个SQL查询...

    ewrwerw

    根据提供的部分内容,我们可以提炼出与Hibernate框架相关的两个关键配置参数:`hibernate.jdbc.fetch_size` 和 `hiberate.jdbc.batch_size`。这两个参数对于优化基于Hibernate的数据库操作性能至关重要。 ### 1. ...

    mysql C++接口的封装以网络的使用

    while ((row = mysql_fetch_row(res))) { std::vector<std::string> record; for (size_t i = 0; i < mysql_num_fields(res); ++i) { record.push_back(row[i] ? row[i] : ""); } result.push_back(record); ...

    如何在Mysql中直接储存图片

    ### 如何在MySQL中直接储存图片 随着互联网技术的发展与应用需求的...此外,考虑到性能问题,通常建议只在必要的情况下使用数据库来存储大文件,对于大量且频繁访问的大文件,可能需要考虑使用专门的文件存储服务。

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    首先定义了游标cur,然后使用“open cur”打开游标,并通过“fetch cur into s_age”获取当前行的sage值。之后,使用“update student set borthyear=2018-s_age”更新目标字段。这个过程不断循环直到游标中无更多行...

    php操作文件大全和mysql

    - **mysqli_fetch_assoc() / mysqli_fetch_row() / mysqli_fetch_array()**:从结果集中获取行。 - **mysqli_num_rows()**:获取结果集中的行数。 - **mysqli_insert_id()**:获取最后插入行的 ID。 - **mysqli_...

    php/php+ajax+mysql分页

    $row = mysql_fetch_row($result); $amount = $row[0]; // 计算总页数 if ($amount) { if ($amount $page_size) { $page_count = 1; } elseif ($amount % $page_size) { $page_count = (int)($amount / $page_...

    PHP+MYSQL留言本系统

    - 使用`mysql_fetch_row`循环读取每一条记录,并显示出来。 - 提供了一个HTML表单,用户可以通过该表单输入留言信息。 3. **InsetToDB.php** - **功能**:用于处理表单提交的数据,并将数据插入到数据库中。 - ...

    Mysql优化JDBC

    如果知道所需数据量,可以设置Fetch Size来一次性获取更多数据,减少数据库调用次数。 5. **关闭资源及时**:在使用完Connection、Statement或ResultSet后,应立即关闭,释放资源。Java 7引入的try-with-resources...

    经典的php+mysql分页显示

    if ($rs = mysql_fetch_array($result)) { $sums = $rs[0]; } ``` 这里首先从原始 SQL 查询语句中截取 `FROM` 部分,构造出一个新的 SQL 查询来获取总的记录数。这是实现分页的基础,因为我们需要知道数据总量以便...

    利用PHP MySQL实现通用的信息系统分页显示功能.pdf

    首先,MySQL是一种关系型数据库管理系统,以其多用户支持、多线程、互联网操作以及开源等特性广泛应用于中小型企业网站。而PHP是一种跨平台的脚本语言,能直接嵌入HTML,支持多种数据库,包括MySQL,其数据库操作...

    html中select语句读取mysql表中内容

    <? $record=0; $db=@mysql_pconnect(‘localhost’,’root’);... $data=@mysql_fetch_array($result); $record=@mysql_num_rows($result); echo "<select name=type size=1>\n"; do{ if ($record==1

    php+mysql+javascript

    while ($row = mysql_fetch_assoc($result)) { $data[] = $row; } // 将结果转换为 JSON 并输出 echo json_encode($data); // 关闭数据库连接 mysql_close($link); ?> ``` #### 3. 前端 HTML/CSS 结构 HTML ...

    PHP 常用参考总结

    - `mysql_fetch_row` 和 `mysql_fetch_array` 都是从查询结果集中获取一行数据,前者仅支持数字索引,后者同时支持数字索引和关联数组。 4. **设置字符集:** - 设置 MySQL 字符集。 ```php mysql_query("SET ...

Global site tag (gtag.js) - Google Analytics