当前位置: 首页 > news >正文

苏州城乡建设网站查询网站与app的本质区别

苏州城乡建设网站查询,网站与app的本质区别,可免费下载的简历模板,咖啡店网站模板基于 mysql 8.0 基础介绍 com.mysql.cj.protocol.ResultsetRows该接口表示的是应用层如何访问 db 返回回来的结果集 它有三个实现类 ResultsetRowsStatic 默认实现。连接 db 的 url 没有增加额外的参数、单纯就是 ip port schema 。 @Test public void generalQuery() t…

基于 mysql 8.0

基础介绍

com.mysql.cj.protocol.ResultsetRows

该接口表示的是应用层如何访问 db 返回回来的结果集

它有三个实现类
在这里插入图片描述

ResultsetRowsStatic

默认实现。连接 db 的 url 没有增加额外的参数、单纯就是 ip port schema 。

@Test
public void generalQuery() throws Exception {String sql = "select * from test";ps = conn.prepareStatement(sql);ResultSet rs = ps.executeQuery(sql);int count = 0;while (rs.next()) {count++;}System.out.println(count);
}

那么这个时候、你的 ResultSet 对应的实现类里面的成员变量

com.mysql.cj.protocol.a.result.NativeResultset#rowData

的实现类就是 ResultsetRowsStatic

这个时候是最蠢的模式、因为 mysql 的驱动层只有接收完 db 所有数据才会返回到应用层。对应代码就是 ResultSet rs = ps.executeQuery(sql); 应用到线程会卡住在这里。直到驱动层返回。
假如表 test 中有 100w 数据、那么发生 OOM 到地方将会是 mysql 驱动层内部的代码、因为它自己将数据存起

	// 来源 com.mysql.cj.protocol.a.BinaryResultsetReader#readBinaryRowFactory brf = new BinaryRowFactory(this.protocol, cdef, resultSetFactory.getResultSetConcurrency(), false);ArrayList<ResultsetRow> rowList = new ArrayList<>();// 真正获取数据ResultsetRow row = this.protocol.read(ResultsetRow.class, brf);while (row != null) {if ((maxRows == -1) || (rowList.size() < maxRows)) {rowList.add(row);}row = this.protocol.read(ResultsetRow.class, brf);}rows = new ResultsetRowsStatic(rowList, cdef);// =============== 分割 ==========private List<Row> rows;@SuppressWarnings("unchecked")public ResultsetRowsStatic(List<? extends Row> rows, ColumnDefinition columnDefinition) {this.currentPositionInFetchedRows = -1;this.rows = (List<Row>) rows;this.metadata = columnDefinition;}

ResultsetRowsCursor

想要启用这种模式、需要在连接 db 的 url 中加上参数 useCursorFetch=true

jdbc:mysql://127.0.0.1:3306/test-db?useCursorFetch=true

并且对应的 fetchSize 要大于 0
我们看下源码 com.mysql.cj.jdbc.ConnectionImpl#prepareStatement(java.lang.String)
发现参数 int resultSetType, int resultSetConcurrency 默认值为

    private static final int DEFAULT_RESULT_SET_TYPE = ResultSet.TYPE_FORWARD_ONLY;private static final int DEFAULT_RESULT_SET_CONCURRENCY = ResultSet.CONCUR_READ_ONLY;

当我们设置了 useCursorFetch=true 之后、useServerPrepStmts 会被设置为 true
com.mysql.cj.jdbc.ConnectionImpl#ConnectionImpl(com.mysql.cj.conf.HostInfo)com.mysql.cj.conf.PropertySet#initializeProperties com.mysql.cj.jdbc.JdbcPropertySetImpl#postInitialization

     if (getBooleanProperty(PropertyKey.useCursorFetch).getValue()) {// assume server-side prepared statements are wanted because they're required for this functionalitysuper.<Boolean>getProperty(PropertyKey.useServerPrepStmts)
http://www.yayakq.cn/news/874626/

相关文章:

  • 做mv主题网站wordpress电商模板
  • 网站建设找什么公司分享类网站怎么做
  • 给小公司做网站赚钱么简单建站的网站
  • 手机网站开发相关问题公司网站制作新手教程
  • 容桂网站开发哈尔滨专利局申请专利地址
  • 产品网站开发流程怎样在网上建网站做电商生意
  • 遵义市城乡建设局安管人员考试网站西宁高端网站制作
  • 专门做产品测评的网站广州市酒店网站设计
  • 外包加工网站有哪些支付网站模板
  • php手机网站苏州建设监理有限公司网站
  • 广告位网站建设丹徒网站建设服务
  • 网站建设合同 完整版动态背景网站
  • 兼职做设计的网站网页设计简单
  • 做招聘网站创业千与千寻网页设计代码
  • 郑州建站排名企业网页建设公司联系电话
  • 建设网站招标网站建设功
  • 网站策划编辑删除wordpress媒体库多余
  • 网站公司怎么做运营网站建设丶金手指下拉15
  • 花万元请人做网站想做运营怎么入手
  • 怎么做赌钱网站网站建设与网站优化销售
  • 个人游戏网站备案自己网站上做支付宝怎么收费的
  • 昆明网站建设公司排名沈阳空间选址服务平台上线
  • 网站后台功能开发建设一个网站步骤
  • 网站如何做播放线路电商运营培训班多少钱
  • 宝塔网站搭建教程佛山建设工程交易中心网站
  • 博物馆网站开发在线制作图标免费
  • 哪个网站用织梦做的秦皇岛商联网络科技有限公司
  • 做网站镜像步骤徐州建站公司
  • GTA5浏览器网站建设中做c2c网站的弊端
  • 珠海建设网站公司哪家好自动的网站制作