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

mysql 大数据查询

基于 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)

相关文章:

mysql 大数据查询

基于 mysql 8.0 基础介绍 com.mysql.cj.protocol.ResultsetRows该接口表示的是应用层如何访问 db 返回回来的结果集 它有三个实现类 ResultsetRowsStatic 默认实现。连接 db 的 url 没有增加额外的参数、单纯就是 ip port schema 。 @Test public void generalQuery() t…...

如何在 Spring Boot 中利用 RocketMQ 实现批量消息消费

文章目录 准备工作项目依赖配置 RocketMQ生产批量消息消费批量消息测试批量消息发送和消费总结推荐阅读文章 RocketMQ 是一款分布式消息队列&#xff0c;支持高吞吐、低延迟的消息传递。对于需要一次处理多条消息的场景&#xff0c;RocketMQ 提供了批量消费的机制&#xff0c;这…...

推荐一个Star超过2K的.Net轻量级的CMS开源项目

推荐一个具有模块化和可扩展的架构的CMS开源项目。 01 项目简介 Piranha CMS是一个轻量级且跨平台的CMS库&#xff0c;专为.NET 8设计。 该项目提供多种模板&#xff0c;具备CMS基本功能&#xff0c;也有空模板方便从头开始构建新网站&#xff0c;甚至可以作为移动应用的后端…...

基于驾驶员面部特征的疲劳检测系统

大家好&#xff0c;本文是对基于驾驶员面部特征的疲劳检测系统源码的介绍与说明。 项目下载&#xff1a;基于驾驶员面部特征的疲劳检测系统 1.关于项目 疲劳驾驶检测系统通过监测驾驶人的眼睛状态&#xff0c;头部状态&#xff0c;嘴部状态等指标&#xff0c;识别出疲劳迹象…...

前端知识点---字符串的8种拼接方法(Javascript)

文章目录 01使用 运算符(改变了原始字符串)02使用 运算符(改变了原本的字符串)03 使用 concat() 方法(不改变原本的字符串)04使用模板字面量&#xff08;不改变原本的字符串&#xff09;05使用 join() 方法&#xff08;不改变原本的字符串&#xff09;①指定分隔符 ②没有指定…...

用 Python 从零开始创建神经网络(一):编码我们的第一个神经元

编码我们的第一个神经元 引言1. A Single Neuron&#xff1a;Example 1Example 2 2. A Layer of Neurons&#xff1a;Example 1 引言 本教程专为那些对神经网络已有基础了解、但尚未动手实践过的读者而设计。尽管网上充斥着各种教程&#xff0c;但很多内容要么过于简略&#x…...

低代码开发

低代码&#xff08;Low Code&#xff09;是一种软件开发方法&#xff0c;它通过可视化界面和少量的编码来快速构建应用程序。低代码平台的核心理念是通过抽象和最小化手工编码的方式&#xff0c;加速软件开发和部署的过程。 定义 低代码是一种软件开发方法&#xff0c;它允许…...

sql server 文件和文件组介绍

sql server 文件和文件组介绍 数据库文件和文件组 - SQL Server | Microsoft Learn...

caozha-CEPCS(新冠肺炎疫情防控系统)

caozha-CEPCS&#xff0c;是一个基于PHP开发的新冠肺炎疫情防控系统&#xff0c;CEPCS&#xff08;全称&#xff1a;COVID-19 Epidemic Prevention and Control System&#xff09;&#xff0c;可以应用于单位、企业、学校、工业园区、村落等等。小小系统&#xff0c;希望能为大…...

1Panel修改PostgreSQL时区

需求 1Panel安装的PostgreSQL默认是UTC时区&#xff0c;需要将它修改为上海时间 步骤 进入PostgreSQL的安装目录 /opt/1panel/apps/postgresql/postgresql/data打开postgresql.conf文件 修改&#xff1a; log_timezone Asia/Shanghai timezone Asia/Shanghai保存后重启…...

开发一个CRM系统难吗?CRM系统的实现步骤

越来越多企业意识到了&#xff0c;客户关系管理&#xff08;CRM&#xff09;系统已成为企业提升客户体验、推动销售增长的必备工具。一个高效的CRM系统不仅能够帮助企业优化客户数据管理&#xff0c;还能提升客户满意度&#xff0c;增强客户忠诚度&#xff0c;从而推动业务的持…...

kafka常见面试题总结

Kafka 核心知识解析 一、Kafka 消息发送流程 Kafka 发送消息涉及两个线程&#xff1a;main 线程和 sender 线程。在 main 线程中&#xff0c;会创建一个双端队列 RecordAccumulator&#xff0c;main 线程负责将消息发送给 RecordAccumulator&#xff0c;而 sender 线程则从 R…...

前端知识点---Javascript中检测数据类型函数总结

文章目录 01 typeof 运算符02 instanceof 运算符03 Array.isArray()04 Object.prototype.toString.call()05 constructor 属性06 isNaN() 和 Number.isNaN() (常用)07 isFinite() 和 Number.isFinite()08 typeof null 是 "object" 的问题 01 typeof 运算符 返回值是…...

aspose如何获取PPT放映页“切换”的“持续时间”值

aspose如何获取PPT放映页“切换”的“持续时间”值 项目场景问题描述问题1&#xff1a;从官方文档和资料查阅发现并没有对切换的持续时间进行处理的方法问题2&#xff1a;aspose的依赖包中&#xff0c;所有的关键对象都进行了混淆处理 解决方案1、找到ppt切换的持续时间对应的混…...

【MQTT】代理服务比较RabbitMQ、Mosquitto 和 EMQX

前言 目前要处理大量设备同时频繁发送数据的情况&#xff0c;MQTT协议确实是一个更优的选择&#xff0c;因为它特别适合需要低带宽和高效能的物联网应用&#xff0c;下面是对目前主流协议的对比 数据截止日期&#xff1a;2024年11月10日 基础设施 后端&#xff1a; springclo…...

【C#/C++】C++/CL中String^的含义和举例,C++层需要调用C#层对象时...

示例&#xff1a; String^ IDataServer::GetParam(String^ aParamName){ /// }在 C/CLI 中&#xff0c;String^ 和 IDataServer::GetParam(String^ aParamName) 这种写法是一种混合了 C 和 .NET 的语法&#xff0c;用于在 C 中操作 .NET 对象。C/CLI 是微软扩展的 C 语言&…...

Python学习从0到1 day26 第三阶段 Spark ② 数据计算Ⅰ

人总是会执着于失去的&#xff0c;而又不珍惜现在所拥有的 —— 24.11.9 一、map方法 PySpark的数据计算&#xff0c;都是基于RDD对象来进行的&#xff0c;采用依赖进行&#xff0c;RDD对象内置丰富的成员方法&#xff08;算子&#xff09; map算子 功能&#xff1a;map算子…...

【详细】如何优雅地删除 Docker 容器与镜像

内容预览 ≧∀≦ゞ 镜像与容器的区别删除容器和镜像的具体步骤1. 删除容器步骤 1&#xff1a;查看当前运行的容器步骤 2&#xff1a;停止容器步骤 3&#xff1a;删除容器 2. 删除镜像步骤 1&#xff1a;查看镜像列表步骤 2&#xff1a;删除镜像 3. 删除所有容器和镜像 使用 1Pa…...

Spring Spring Boot 常用注解总结

在 Java 开发中&#xff0c;Spring 和 Spring Boot 框架广泛应用于企业级应用开发。这两个框架提供了丰富的注解&#xff0c;使得开发更加高效和便捷。本文将对 Spring 和 Spring Boot 中常用的注解进行总结。 一、Spring 常用注解 1. Component 作用&#xff1a;用于将普通的…...

Flink独立集群+Flink整合yarn

Flink独立集群的搭建&#xff1a; 1、上传解压配置环境变量 # 1、解压 tar -xvf flink-1.15.4-bin-scala_2.12.tgz # 2、修改环境变量 export FLINK_HOME/usr/local/soft/flink-1.15.4 export PATH$PATH:$FLINK_HOME/bin 2、修改配置文件 cd /usr/local/soft/flink-1.15.4/…...

FlowState Lab问题排查大全:从依赖错误到显存溢出的解决方案

FlowState Lab问题排查大全&#xff1a;从依赖错误到显存溢出的解决方案 1. 引言 遇到技术问题时的挫败感&#xff0c;相信每个开发者都深有体会。特别是当你满怀期待地准备运行FlowState Lab时&#xff0c;突然蹦出的错误提示就像一盆冷水浇下来。别担心&#xff0c;这篇文章…...

绝地求生游戏辅助工具:罗技鼠标宏自动化配置指南

绝地求生游戏辅助工具&#xff1a;罗技鼠标宏自动化配置指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在《绝地求生》这款高强度的战术竞技…...

济南精神心理专科:如何识别躯体化障碍的早期信号

济南躯体化障碍疾病就医选择难题在济南&#xff0c;面对躯体化障碍疾病的朋友最关心的是隐私和靠谱。选择一家好的医院至关重要&#xff0c;尤其是看躯体化障碍一定要选专科专业医院。这类医院不仅在专业诊疗上更有优势&#xff0c;还能提供更好的隐私保护和服务体验。本文将基…...

千问3.5-9B提示词工程:优化OpenClaw任务拆解质量

千问3.5-9B提示词工程&#xff1a;优化OpenClaw任务拆解质量 1. 为什么需要优化提示词 去年冬天第一次用OpenClaw自动整理会议纪要时&#xff0c;我被它的"耿直"气笑了——让它"提取关键结论"&#xff0c;结果给我返回了整段录音的文字版&#xff0c;连&…...

2026降AIGC率工具实测:10款好用工具推荐(论文AI痕迹重必看)

临近毕业季&#xff0c;不少同学都在为论文的AIGC检测头疼&#xff1a;明明是自己写的内容&#xff0c;却被判定为AI生成&#xff1f;用AI搭了初稿&#xff0c;怎么改都消不掉机器痕迹&#xff1f;到底有没有靠谱的降AI率工具能真正解决问题&#xff1f; 今天我就给大家整理了1…...

Qwen3-14B日志分析教程:ELK栈收集推理请求、响应、错误全链路追踪

Qwen3-14B日志分析教程&#xff1a;ELK栈收集推理请求、响应、错误全链路追踪 1. 为什么需要日志分析 当你在私有化部署Qwen3-14B模型时&#xff0c;可能会遇到各种问题&#xff1a;为什么推理速度突然变慢了&#xff1f;为什么API返回了错误响应&#xff1f;哪些请求消耗了最…...

SDMatte部署避坑指南:首次加载延迟、模型切换等待、端口冲突解决方案

SDMatte部署避坑指南&#xff1a;首次加载延迟、模型切换等待、端口冲突解决方案 1. 为什么选择SDMatte进行图像抠图 SDMatte是一款专为高质量图像抠图设计的AI模型&#xff0c;特别适合处理那些传统抠图工具难以应对的复杂场景。想象一下&#xff0c;你需要把玻璃杯从背景中…...

dig (Domain Information Groper):从命令行到自动化运维的DNS探秘

1. 从命令行工具到运维利器的dig进化史 第一次接触dig命令时&#xff0c;我正被一个诡异的域名解析问题困扰。当时作为新手运维&#xff0c;只会用ping和nslookup反复测试&#xff0c;直到同事甩给我一行dig trace example.com——瞬间看到了完整的DNS解析链条&#xff0c;那种…...

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南

QModMaster&#xff1a;5分钟掌握免费开源ModBus调试工具终极指南 【免费下载链接】qModbusMaster 项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster 你是否在为工业设备调试而烦恼&#xff1f;面对复杂的ModBus通信协议&#xff0c;商业软件价格昂贵&#…...

源代码之下的硅基启示录——Claude Code“核泄漏”事件的深度剖析与时代回响

引言 公元2026年3月30日&#xff0c;一个看似平常的春日&#xff0c;硅基世界却迎来了一场史无前例的地震。 一家以“安全”为最高信条的AI公司&#xff0c;以一种最荒诞的方式&#xff0c;亲手打开了潘多拉的魔盒。Anthropic&#xff0c;这家估值高达3800亿美元的AI新贵&#…...