Vous n'êtes pas identifié(e).

#1 10/11/2010 22:47:42

NOURI
Membre

Optimisation d'une DLL de traçabilité

Bonjour à tous,

J’ai un petit question est j'espère trouver la bon réponse ici,
Voila, j'ai une dll (crée en c avec la lib pqlib) qui assure la traçabilité  pour un banc de test, mon problème est le lenteur d'exécution des requêtes (insertion des mesures dans la base), en faite pour chaque transaction SQL je passe par les étapes suivantes :
- Connexion à la BDD.
- Exécution de la requête.
- Déconnexion à la BDD.

Est ce que c'est possible de lancer la connexion au démarrage de mon application est la déconnexion a la fermeture ?, que pensez vous ?

Mon Config : XPSP2, Labwindows/CVI (Compilateur C), PG 8.3 (Linux Mandriva)

MERCI d’avance.


Cordiales Salutations

Hors ligne

#2 10/11/2010 22:52:48

Marc Cousin
Membre

Re : Optimisation d'une DLL de traçabilité

Vous irez effectivement beaucoup plus vite si vous ne vous déconnectez pas pour chaque requête. Vous irez encore plus vite si vous ne faites pas une insertion par transaction, mais plusieurs.


Marc.

Hors ligne

#3 10/11/2010 23:22:19

NOURI
Membre

Re : Optimisation d'une DLL de traçabilité

merci Marc pour la confirmation,

quelqu'un des mes collègues  me conseillé de créer mon DLL avec C# .NET avec le provider npgsql, puis on passe cette dll en warrper .NET pour l'utilisation avec labwindows/CVI.
Que pensez vous ?,
j'ai des doutes avec les ActiveX (.NET to CVI), par contre avec libpq c'est un accès natif a la BDD, non ?


Cordiales Salutations

Hors ligne

#4 11/11/2010 01:58:51

gleu
Administrateur

Re : Optimisation d'une DLL de traçabilité

La libpq propose un accès natif à la base de données. Le pilote npgsql se base sur la libpq à ma connaissance.


Guillaume.

Hors ligne

#5 11/11/2010 11:05:08

NOURI
Membre

Re : Optimisation d'une DLL de traçabilité

Bonjour,

MERCI à tous,  wink

SVP, j'aurais besoin d'une petite précision à ce point :
Pour le moment je passe toutes mes requêtes (INSERT, UPDATE, SELECT) à la base de données via la libpq et j'utilise parfois des requêtes de jointure sur plusieurs tables ce qui peut être à l'origine de la lenteur aussi, donc je voudrais savoir si je stocke les requête de SELECT dans la base sous forme des procédures stockée, ça peut optimiser les performances ou non ?


Cordiales Salutations

Hors ligne

#6 11/11/2010 13:20:53

daamien
damien clochard

Re : Optimisation d'une DLL de traçabilité

En soit, le fait mettre vos requêtes dans des procédures stockées ne vous apportera pas de meilleures performances. si vous le faites il est essentiel de déclarer vos procédures STABLE ou IMMUTABLE quand c'est possible :

http://docs.postgresql.fr/9.0/xfunc-volatility.html

Si vous voulez optimisez vos traitements, suivez les conseils de Marc :  effectuez plusieurs transactions par sessions, plusieurs insertions par transactions, etc...
Vous pourrez alors utilisez les commandes PREPARE / EXECUTE qui permettent de pré-calculer et réutiliser les plans d'exécution...

http://docs.postgresqlfr.org/9.0/sql-prepare.html

Hors ligne

#7 11/11/2010 17:16:33

NOURI
Membre

Re : Optimisation d'une DLL de traçabilité

Un grand merci pour tous vos discussions

Merci pour tous les pistes.


Cordiales Salutations

Hors ligne

Pied de page des forums