Projet

Général

Profil

Bug #1554

Mis à jour par Jonathan Schaeffer il y a environ 7 ans

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 : 

 <pre> 
 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]] 
 </pre> 


 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

Retour