Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour
J'utilise un serveur SQL2008, le client SQLNCLI10 et powerbuilder 11.5 b4608.
J'ai une datawindow qui utilise une procédure stockée comme alimentation.
Cette procédure stockée qui retourne une table temporaire, s'exécute en 20 secondes à partir du sqlmanager.
La même procédure, exécutée dans powerbuilder ne produit un résultat que au bout de 10 minutes sous powerbuilder.
(mêmes critères bien entendu lors des deux exécutions)
Une solution ?un problème connu ?
Yann
Dernière modification par ydl (14-12-2009 14:35:19)
Hors ligne
Le problème avec les datawindow c'est la lenteur que çà prend à construire toute la partie graphique.
Combien de champs dois-tu rappatrier dans la DW ?
Plus tu ramènes de champs plus c'est lent.
As-tu essayé de lancer la procédure à partir d'un curseur dans un script et vérifier si çà prend toujours autant de temps ?
@+
Vincent
Hors ligne
Je vais tester l'appel dans un datastore, on verra bien.
Hors ligne
Bonjour,
Il n'est pas logique d'avoir une telle différence.
Le facteur très connu de ce phénomène est l'existence de code Powerbuilder dans l'événement RetrieveRow de la datawindow impliquant un traitement PB à chaque ligne récupérée et entraînant éventuellement un rafraichissement graphique à chaque ligne récupérée (dans ce cas un SetRedraw(FALSE) avant le Retrieve et SetRedraw(TRUE) après le Retrieve améliore très nettement les performances).
Hors ligne
Pour plus de précision, c'est l'existence même d'un script associé à l'évènement RetrieveRow qui provoque un ralentissement. Même si ledit script ne contient qu'un commentaire !
Hors ligne
Attention également au nombre de lignes retournées.
Dans PB la datawindow charge la totalité du résultset si on ne lui précise rien, alors que de nombreux outils (Toad par exemple) ne retourne que le nombre de lignes affichées ("retrieve as needed"). Dans ce deuxième cas, un scroll vers la dernière ligne déclanche souvent la suite de la lecture du resultset et finalement le temps de réponse est assez proche de PB (sauf code dans retrieverow ou "gros" compute dans la DW bien sur)
Hors ligne
J'ai jeté un oeil sur ma datawindow et je n'ai pas de code dans le retrieverow().
Cela venait de ma procédure stockée , que je viens de modifier et j'ai une exécution en 7s.
Merci à tous.
Dernière modification par ydl (14-12-2009 14:35:00)
Hors ligne