Node.js中的数据库查询分析

时间:2016-11-23 01:58:22

标签: node.js postgresql asynchronous profiling pg-promise

我正在使用express构建一个json API(好吧,也许会移到koa)。我将我的数据存储在PostgreSQL数据库中,并使用pg-promise从中获取数据(async/await通过babel)。

我对node.js完全陌生,我无法在该环境中找到有关性能测量的任何信息。

具体来说:

module.exports.get_hierarchy = async function () {
    const rows = await postgres.any('SELECT id, parent, title, permission FROM heading');

    var result = [];
    // some black magic goes here...

    return result;
}

我想知道(以编程方式,如果可能SELECT消耗多少时间。 (不是时间承诺从构建到解析,这可以通过获取两个时间戳来实现,但是DB服务器用于处理查询的实际时间)。

这可以实现吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

正如您自己提到的,在您的案例中有两种方法可以分析执行时间:

  • 从您调用pg-promise方法获取结果
  • 的时间
  • 服务器执行查询所花费的时间

第一个是使用方法result最容易做到的,方法Result解析为具有属性duration的{​​{1}}对象。

第二个需要直接执行EXPLAIN,通常是通过每个PostgreSQL安装附带的pgAdmin工具,或者你可以使用psql终端。