nodejs连接oracle批量更新数据测试

条件:oracle数据库,数据表20w。所有测试都在本机执行,保持相同的网络带宽。因为机器性能和更新速度问题,这里只测试更新1w数据。

方式1:nodejs代码程序块更新

    const sql = "declare i number:= 0;begin"+ " while i < 10000 loop"+ " update FDC_G_INFORMATION_OPINION set updatezd1 = '字段111111',updatezd2 = '字段111111',updatezd3 = '字段111111',updatezd4 ='字段111111' where id = i; i := i+1; "+ " end loop; "+ " commit;"+ " end;"await dbTarget.execute(sql);

用时:128s 

方式2:nodejs代码逐条更新

    const sqlStatements = [];for (let i = 0; i < 10000; i++) {sqlStatements.push("update table1 set updatezd1 = '字段111111',updatezd2 = '字段111111',updatezd3 = '字段111111',updatezd4 = '字段111111' where id = " + i)}// 3. 批量执行SQL语句  for (const sql of sqlStatements) {// 执行SQL语句  await dbTarget.execute(sql);}await dbTarget.commit();

用时:295s

方式3:nodejs代码批量执行

    const sql = 'UPDATE table1 SET updatezd1 = :value1, updatezd2 = :value2, updatezd3 = :value3, updatezd4 = :value4 WHERE id = :id';const bindVars = [];for (let i = 0; i < 10000; i++) {bindVars.push({ id: i, value1: 'newValue1_1', value2: 'newValue2_1', value3: 'newValue2_1', value4: 'newValue2_1' })}// 3. 执行批量更新  const options = {autoCommit: true, // 如果需要手动提交事务,可以设置为false,并在所有操作完成后调用connection.commit()  };await dbTarget.executeMany(sql, bindVars, options);

用时:156s 

这里只是简单测试,其实速度快慢比较大家想都能想出来,程序块执行速度肯定是最快的,因为我们把更新压力转移到数据库内存里去了;批量更新比逐条更新也快了很多,不过只适合固定更新字段的。

为了灵活起见,可不可以把程序需要执行的sql写到程序块呢,这样直接塞到数据库中执行岂不美哉?当然可以,不过测试发现程序段的代码太长,无法请求到数据库中,可以把语句分批放在多个程序块中分批执行。但是也要考虑数据库的性能问题,哈哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么分类问题不能使用mse损失函数,更容易理解版本

分类问题通常不适合使用均方误差&#xff08;Mean Squared Error&#xff0c;MSE&#xff09;损失函数&#xff0c;原因如下&#xff1a; 1.输出差异&#xff1a; 输出差异的度量不同&#xff1a;MSE损失函数是基于预测值和真实值之间的差异的平方和进行计算的&#xff0c;适…

一分钟教你学浪视频怎么存到网盘里面#小浪助手

只需要将学浪视频下载下来,然后利用网盘的上传功能,就能将学浪视频存到网盘里面 那么怎么下载学浪视频呢?其实这里可以借助一个工具:小浪助手 小浪助手我已经打包好了,有需要的自己取一下 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1nyjXc88BWbF8jnfQWUGLZQ?pwd…

Python爱心代码

爱心效果图&#xff1a; 完整代码&#xff1a; import random from math import sin, cos, pi, log from tkinter import *# 定义画布尺寸和颜色 CANVAS_WIDTH 640 CANVAS_HEIGHT 480 CANVAS_CENTER_X CANVAS_WIDTH / 2 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 IMAGE_ENLARG…

Pandabuy代采模式独立站打造攻略,轻松开启全球电商新篇章!

Pandabuy是一个知名的代采平台&#xff0c;老外想要购买1688的物美价廉的商品&#xff0c;但是受限于物流和支付&#xff0c;老外没有大陆支付宝&#xff0c;另外1688不支持海外物流。作为跨境出口的代采平台&#xff0c;pandabuy解决了这个问题 通过对接1688的搜索api&#xf…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 4月26日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年4月26日 星期五 农历三月十八 1、 神舟十八号载人飞船发射取得圆满成功&#xff0c;3名航天员与神舟十七号乘组实现“太空会师”。 2、 工信部征求意见&#xff1a;电动自行车拟禁用车载充电器。 3、 两部门&#xff1a;调…

暖阳脚本——写脚本注意事项!

1&#xff0c;要看他是不是全职技术 2&#xff0c;做多长时间&#xff0c;有没有项目经验 3&#xff0c;售后服务有没有保证 4&#xff0c;支不支持三方或面签 以上都满足&#xff0c;这个作者基本没什么问题

详解Qt中实现树状结构图

在Qt中&#xff0c;实现树状结构图通常采用QTreeWidget或QTreeView组件。这两个组件都允许我们创建具有层次结构的列表&#xff0c;但它们之间存在一些差异。QTreeWidget提供了更简单的API&#xff0c;适用于轻量级、快速开发的需求&#xff1b;而QTreeView则更为灵活和可定制&…

BERT(Bidirectional Encoder Representations from Transformers)

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;在深度学习中指的是一种基于Transformer架构的预训练模型&#xff0c;特别用于自然语言处理&#xff08;NLP&#xff09;任务。BERT是由Google的研究团队在2018年提出的&#xff0c;并且迅…

el-select 通过输入框筛选内容之后,清空输入框的值

问题描述&#xff1a; select组件的远程搜索需求&#xff0c;通过 input 输入框进行筛选&#xff0c;当选择确认之后在选中的内容之后还有输入的文案&#xff0c;这时需要手动去清除。 解决方案&#xff1a; 我们可以通过 ref 来获取 dom&#xff0c;其中 dom 的 query 字段…

美国服务器vs香港服务器,哪个网站部署打开更快一些?

网站打开速度受多种因素影响&#xff0c;包括服务器地理位置、网络质量、带宽等。用户距离服务器越近&#xff0c;访问速度越快。对于中国大陆用户而言&#xff0c;香港的服务器可能会提供更快的网站访问体验&#xff0c;因为香港距离大陆较近&#xff0c;且网络连接通常较好。…

盲人导航手机:科技之光点亮无碍出行新纪元

作为一名资深记者&#xff0c;我有幸见证了科技如何跨越障碍&#xff0c;赋予特殊群体更为自由、便捷的生活方式。今天&#xff0c;我想向您详细介绍一款专为盲人群体设计的导航应用&#xff0c;蝙蝠避障&#xff0c;它以盲人导航手机这一创新概念&#xff0c;让视障人士在出行…

Oracle Analytics BIEE 操作方法(六)数据格式1:百分比

问题&#xff1a; 有如下公式&#xff0c;将数据显示为按行的百分比。此时数据显示只会有一位小数。想显示两位 解决方案 在分析中找到“高级”标签&#xff0c;将“分析XML”中内容复制出来 替换 将&#xff1a;minDigits“1” maxDigits“1” 替换为&#xff1a;minDigits…

20240425在Ubuntu20.04下检测HDD机械硬盘

20240425在Ubuntu20.04下检测HDD机械硬盘 2024/4/25 14:28 百度&#xff1a;免费 HDD 机械硬盘坏道检测 ubuntu HDD机械硬盘 坏道检测 https://blog.csdn.net/anny0001/article/details/136001767 ubuntu 坏道扫描 Mystery_zero 已于 2024-02-02 22:20:46 修改badblocks -b 819…

Mac环境安装任意版本的node

背景 由于在使用node的时候需要频繁的切换node的版本。在windows上可以通过安装不同版本的软件进行实现&#xff0c;在mac上可以更加方便快捷的实现这个过程哦&#xff01; 全局安装n npm install -g n选择不同的版本 # 安装最新稳定版 node n stable # 安装最新版本 node …

书生·浦语 大模型(学习笔记-8)Lagent AgentLego 智能体应用搭建

目录 一、智能体出现的原因 二、智能体的定义 三、智能体的组成 四、Lagent 五、AgentLego 六、实战一&#xff08;Lagent&#xff09; 环境配置及安装 安装依赖 准备 Tutorial Lagent Web Demo AgentLego 使用 图片推理&#xff08;结果&#xff09;&#xff1a; …

js获取电脑或手机相关信息

获取浏览器用户代理字符串&#xff1a; var userAgent navigator.userAgent; console.log("用户代理字符串&#xff1a;" userAgent);检测设备是否支持触摸事件&#xff1a; if (ontouchstart in window) {console.log("设备支持触摸事件"); } else {c…

“一个有趣的C语言代码”分析

“一个有趣的C语言代码” 一个有趣的C语言代码-流浪的海豚-ChinaUnix博客 #include <stdio.h> int print() {printf("hello world!\n");return 0; } int main(void) {long base[0];long* result base3;*(result1) *result;*result (long)print;return 0; …

Java面试题:描述如何在Java中实现日志记录,常用的工具包都有什么

在Java中实现日志记录是一种常见的实践&#xff0c;它可以帮助开发者监控应用程序的运行状态、调试问题、记录重要事件等。Java提供了多种日志记录工具包&#xff0c;以及一些最佳实践来实现有效的日志记录。以下是如何在Java中实现日志记录以及一些常用的日志工具包的描述。 …

家庭环境如何异地组网装修?

家庭异地组网装修是如今越来越受到人们关注的问题。在现代社会中&#xff0c;家庭成员经常因为各种原因而分散在不同的地区。这种情况下&#xff0c;如何实现家庭网络的高效通信变得尤为重要。本文将介绍一款异地组网产品——【天联】组网&#xff0c;它能够帮助家庭解决异地组…

PDPS16.0单机版及许可证服务器授权安装教程分享

此前小编做过PDPS15(Tecnomatix_15.0)安装包及安装教程分享&#xff0c;此次分享是PDPS16(Tecnomatix_16.0)单机版安装结合SPLMLicenseServer许可证服务器授权安装的教程。服务器型是完整的pdps&#xff0c;单机版只装了个ps&#xff0c;ps的功能一样&#xff0c;仿真需求没要求…