Actions
Bug #1554
ferméRequêtes sur les mesures à optimiser
Description
Lorsque la base est peuplée de beaucoup de mesures, alors la requête permettant de récupérer un JSON des mesures d'un paramètres est trop longue.
- Mesurer le temps dans la situation actuelle en ayant importé un grand nombre de mesures
- Investiguer côté PostgreSQL, à l'aide d'unre requête SELECT de référence
- Éliminer les points chauds de la requête par des index ou autres optimisations
- Mesurer le gain de performance ainsi obtenu
Dans les logs du serveur de production on peut voir cette ligne qui donne une indication sur la requête SELECT qui est passée :
D, [2017-02-14T15:46:42.037898 #18991] DEBUG -- : Measure Load (65996.8ms) SELECT "measures".* FROM "measures" WHERE "measures"."station_id" = $1 AND "measures"."parameter_id" = $2 ORDER BY "measures"."date" ASC [["station_id", 711], ["parameter_id", 169]]
Postgresql :
- utiliser la commande EXPLAIN : https://www.postgresql.org/docs/9.1/static/sql-explain.html
- ajouter des index : https://www.postgresql.org/docs/9.1/static/indexes.html
- évaluer le coût du tri
- voir si on peut obtenir directement une sortie JSON ? https://dockyard.com/blog/2014/05/27/avoid-rails-when-generating-json-responses-with-postgresql
https://www.postgresql.org/docs/9.3/static/functions-json.html
Actions