千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  jdbc的resultset底层实现原理是怎样的?

jdbc的resultset底层实现原理是怎样的?

来源:千锋教育
发布人:xqq
时间: 2023-10-19 09:36:35

一、jdbc的resultset底层实现原理是怎样的

只了解 mysql, mysql 中的 result 默认会把所有结果拿回来。默认情况下,结果集完全检索并存储在内存中。在大多数情况下,这是最有效的操作方式,并且由于MySQL网络协议的设计,更容易实现。

如果您正在使用具有大量行或较大值的结果集,并且无法在 JVM 中为所需的内存分配堆空间,则可以告诉驱动程序一次将结果流式传输回一行。

所以所以如果应用不想一次拿那么多,可以

stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);

stmt.setFetchSize(Integer.MIN_VALUE);

setFetchSize一个非MIN_VALUE在一般情况下是没啥用的, 但如果设置了 MIN_VALUE 之后 jdbc 代码中会用一个 streamingResult 的方式一条条从 server 的连接拿,当然这个文档中也提到了用这种方式的一些 caveats。

最后,除了使用 MIN_VALUE, 还可以使用 useCursorFetch=true(同时需要 prepare? ),之后 setFetchSize 就能生效了,不过和上面的区别是: 前面是 mysql 一次吐全部数据推给客户端,客户端一条条收然后收的慢通过 tcp backpressure; 后者用 cursor 是 mysql 不返回全部结果,而是客户端根据 setFetchSize(或 defaultFetchSize) 多次用 从 mysql 拉取指定条数据。

延伸阅读:

二、Navicat是什么

Navicat是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本。Navicat图形界面直观,提供简便的管理方法,设计和操作MySQL、MariaDB、SQL Server、Oracle、PostgreSQL和SQLite的数据。

Navicat提供一个直观和设计完善的用户界面,用于创建、修改和管理资料库的所有对象,例如表、视图、函数或过程、索引、触发器和序列。我们的表设计器帮助用户创建和修改数据库的表,让设置高级选项,如关系、限制、触发器和更多。

使用Navicat浏览和修改数据,插入、编辑、删除数据或复制和粘贴记录到数据表形式的数据编辑器,Navicat将运行相应的命令(例如INSERT或UPDATE),免除写复杂的SQL。广泛的数据编辑工具令编辑工作更为方便,例如外键查找、set/enum选择器和记录筛选。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

C语言中定义与声明的含义是什么?

2023-10-19

Oracle/MySQL数据库创建索引的原则是什么?

2023-10-19

java.sql.Date,java.sql.Time和java.sql.Timestamp什么区别?

2023-10-19

最新文章NEW

C++ 写即时通讯服务器用什么数据库比较合适?

2023-10-19

云数据库并发数和连接数是个怎样的关系?

2023-10-19

为什么有些低端云主机(1CPU,4G内存)也提供SQLServer,这大型数据库,能运行吗?

2023-10-19

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>