2 votes

Profilage des requêtes DB en Node.js

Je construis une API json en utilisant express (enfin, peut-être que je vais déménager à koa ). Je stocke mes données dans une base de données PostgreSQL, et j'utilise pg-promise pour en extraire des données ( async/await via babel).

Je suis totalement novice en matière de node.js et je ne trouve aucune information sur la mesure des performances dans cet environnement.

Pour être précis :

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;
}

Je veux savoir (de manière programmatique si possible ) combien de temps SELECT consomme. (Pas le temps que la promesse vit de la construction à la résolution, qui peut être obtenu en prenant deux horodatages, mais le temps réel consommé par le serveur de la BD pour traiter la requête).

Peut-on y parvenir ? Si oui, comment ?

1voto

user1102051 Points 152

Comme vous l'avez mentionné vous-même, il y a deux façons de profiler le temps d'exécution dans votre cas :

  • le temps où vous appelez une méthode de pg-promise pour récupérer le résultat
  • le temps nécessaire à l'exécution de la requête par le serveur

La première est la plus simple à réaliser en utilisant la méthode résultat qui se résout par Result qui a la propriété duration .

Et la seconde nécessite l'exécution directe de EXPLIQUER généralement par l'intermédiaire du pgAdmin qui est fourni avec chaque installation PostgreSQL, ou vous pouvez utiliser le terminal psql.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X