gpt4 book ai didi

mysql - 为什么 node.js 的 Mysql native 驱动程序的查询执行时间如此之高?还有其他选择吗?

转载 作者:可可西里 更新时间:2023-11-01 07:38:37 25 4
gpt4 key购买 nike

为什么在使用 Nodejs 的 Mysql native 驱动程序时,即使使用或不使用“创建池”选项,相同的查询花费的时间比实际执行时间多 300 毫秒

请引用下面所附屏幕截图中突出显示的部分

Mysql workbench execution

关于 native 驱动程序执行时间,请参见下面的截图:

enter image description here

node.js Mysql Native 驱动的代码库

db.js

var mysql = require('mysql');
var connectionpool = mysql.createPool({
connectionLimit: 100, //important
host: 'localhost',
user: config.development.username,
password: config.development.password,
database: config.development.database,
multipleStatements: true,
});

exports.getConnection = function(callback) {
connectionpool.getConnection(callback);
};

emp.js

var connections = require('../config/db');
var pre_query = new Date().getTime();
var sqlstatements = "select * from employees where recordstate<>'raw'and DATE(createdAt) " + "between ('1982-03-24') and ('2017-04-23') order by employeesID desc limit 20 offset 0;" + "select COUNT(*) as count from employees where recordstate<>'raw'and " + "DATE(createdAt) between ('1982-03-24') and ('2017-04-23') order by employeesID desc";
connections.getConnection(function(err, c) {
console.log(sqlstatements)
c.query(sqlstatements, function(err, projects) {


console.log(err);
if (!err) {
c.release();

var red = new Object();
red.rows = JSON.parse(JSON.stringify(projects[0]));
red.count = JSON.parse(JSON.stringify(projects[1]))[0].count;
var post_query = new Date().getTime();
// calculate the duration in seconds
var duration = (post_query - pre_query) / 1000;
console.log(duration)
// console.log(red);
res.json(red);

}
})
})

最佳答案

您在 JS 中的测量包括连接设置和所有结果处理。 MySQL Workbench(和 MySQL 终端客户端)中报告的时间只是服务器报告的时间(运行查询和结果传输)。仅连接设置可能就占用了 300 毫秒的大部分时间。尝试将 pre_query init 移动到运行实际查询之前的行。并在此之后(在 console.log(err) 调用之前)直接结束时间测量。这提供了与其他客户端工具报告的结果相当的结果。

关于mysql - 为什么 node.js 的 Mysql native 驱动程序的查询执行时间如此之高?还有其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43564543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com