NodeJS MySQL:测量查询执行时间

问题描述 投票:0回答:4

我在共享托管平台上,希望限制应用程序中的查询,以便如果总执行时间在可变时间段内超过一定量,那么我可以让应用程序冷却,然后稍后恢复。

为此,我想了解每个查询实时花费多长时间并在应用程序内管理它,而不是通过外部分析它。

我见过 PHP 中的示例,其中在查询之前和之后记录时间(甚至 phpMyAdmin 也这样做),但这在 NodeJS 或任何异步运行查询的东西中不起作用。

所以问题是:我该如何获取 NodeJS 中查询的实际执行时间?

仅供参考,我使用此模块来查询 MySQL 数据库:https://github.com/felixge/node-mysql/

mysql node.js optimization execution-time node-mysql
4个回答
8
投票

一种选择是在查询之前添加时间戳并在查询之后添加时间戳,然后检查差异,如下所示:

// get a timestamp before running the query
var pre_query = new Date().getTime();
// run the job
connection.query(query, function(err, rows, fields) {
  // get a timestamp after running the query
  var post_query = new Date().getTime();
  // calculate the duration in seconds
  var duration = (post_query - pre_query) / 1000;
});

1
投票
console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// prints 100-elements: 225.438ms

标签必须是唯一的并且与开始和结束时间相同

在 Nodejs 中运行良好。

这里是 nodejs 的文档


0
投票

如果您使用rest api,那么您可以使用postman。在邮递员中运行查询,然后在部分的中间右侧查找时间:如所附图片所示。


0
投票

你可以使用

性能.now()

测量查询执行时间的方法。使用

console.time()
也可以。但
performace.now()
console.time()
好得多。您可以按如下方式使用它:

const { performance } = require('perf_hooks');

function add(a, b) {
    return a + b;
}

const start = performance.now();
add(1, 2);
const end = performance.now();
console.log(`Time taken to execute add function is ${end - start}ms.`);
© www.soinside.com 2019 - 2024. All rights reserved.