nodejs使用mysql2插件的sql预处理语句node代码发生

将mysql_pool替换为require('mysql2/promise'),并单独在每个需要连接的方法中获取连接。在query、execute和prepare方法中分别使用获取到的连接进行操作。使用prepare方法编译预处理SQL语句,通过for循环将数据分批处理并提交事务。在每个事务方法最后加入事务回滚和释放连接的代码。经过优化,处理1.5万条数据仅...
nodejs使用mysql2插件的sql预处理语句node代码发生
项目中遇到数据迁移问题,5万条数据从Redis转存至MySQL,使用HGETALL获取Redis数据,排序并提取所需属性,通过mysql.execute()循环执行SQL。初期尝试500条数据,耗时10秒;增加到1500条,时间翻倍至30秒。处理5万条数据预计耗时10-20分钟,效率低下,于是考虑优化方案。

考虑到了两种优化方式:批量SQL执行和SQL预处理。优先选择了预处理,因为对这个知识点了解不足,将其作为学习机会。在查找资料时,发现多数实例针对单条数据,MySQL2模块文档也仅提供单条数据预处理方式。目标是处理几万条数据并支持事务回滚。经过努力,自行研究预处理方法,最终在ChatGPT的代码提示下,找到问题关键。

构建了一个使用async/await的MySQL连接池类,但预处理和事务方法无法正常使用。对照ChatGPT给出的代码,发现是连接池配置方式的问题。将mysql_pool替换为require('mysql2/promise'),并单独在每个需要连接的方法中获取连接。在query、execute和prepare方法中分别使用获取到的连接进行操作。使用prepare方法编译预处理SQL语句,通过for循环将数据分批处理并提交事务。在每个事务方法最后加入事务回滚和释放连接的代码。经过优化,处理1.5万条数据仅需1-2分钟,效率显著提升。

最后进行事务回滚测试,对数据进行限制,导致部分记录出错。结果显示所有记录均执行,但抛出错误,金额字段有问题。查询结果显示,1500条记录正确回滚。至此,数据迁移任务顺利完成,学习到新的MySQL预处理和事务知识,提升了效率。2024-08-24
mengvlog 阅读 27 次 更新于 2025-08-06 20:56:59 我来答关注问题0
  •  猪八戒网 idea启动node项目?

    其中主流的连接MySQL的方式是用mysql或者mysql2包,它们只是提供了调用驱动的api。很多框架中包括egg,nest都是基于此封装的。但这不是SQL注入的关键,它只是一种连接方式。怎么用node启动最简单的一个服务1、如果电脑没有安装nodejs的同学可以先到node官方下载并安装好node程序。2、下载Node.js官方非稳定...

  • 先npm install mysql 然后代码中就可以require('mysql');就可以使用了 var mysql = require('mysql');var pool = mysql.createPool(config);pool.getConnection(function(err, connection) {// Use the connectionconnection.query( 'SELECT something FROM sometable', function(err, rows) {// An...

  • 因此如果用nodejs + mysql只用单个连接的话那么就利用不到mysql能同时服务多个查询的优势了。应该使用类似下图的运作方式,nodejs 使用多个连接来连接mysql。多连接是需要连接池的,有连接池就避免了每次连接都要去创建销毁的消耗了。

  •  j88r nodejs怎么连接数据库

    console.log('Connected to MySQL');});在node中输入npm install mysql(注意安装路径)电脑必须安装mysql数据库(这是前提),创建一个数据库,建立一个表,本教程中用的是nodesmaple,表名是t_user新建a.js代码:[javascript] view plain copyvar mysql = require('mysql');var conn = mysql.cre...

  • 打开 IDEA,选择“Create New Project”创建一个新的 Node.js 项目。在新建项目的目录下打开终端,使用 npm 命令安装 mysql 模块,命令如下:css Copy code npm install mysql --save 在项目的根目录下创建一个名为 index.js 的文件,编写以下代码:javascript Copy code const mysql = require('...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部