我在共享托管平台上,希望限制应用程序中的查询,以便如果总执行时间在可变时间段内超过一定量,那么我可以让应用程序冷却,然后稍后恢复。
为此,我想了解每个查询实时花费多长时间并在应用程序内管理它,而不是通过外部分析它。
我见过 PHP 中的示例,其中在查询之前和之后记录时间(甚至 phpMyAdmin 也这样做),但这在 NodeJS 或任何异步运行查询的东西中不起作用。
所以问题是:我该如何获取 NodeJS 中查询的实际执行时间?
仅供参考,我使用此模块来查询 MySQL 数据库:https://github.com/felixge/node-mysql/
一种选择是在查询之前添加时间戳并在查询之后添加时间戳,然后检查差异,如下所示:
// 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;
});
console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// prints 100-elements: 225.438ms
标签必须是唯一的并且与开始和结束时间相同
在 Nodejs 中运行良好。
这里是 nodejs 的文档
你可以使用
性能.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.`);