Bonjour.
Je cherche à faire des tests de performances sur une petite base de données FIREBIRD. Pour cela j'ai crée une procédure stockée que j'appelle plusieurs fois par secondes ( nombre d'appels par seconde ajustables ). L'Application est développée en C souS Labwindows/CVI en utilisant le SQL TOOLKIT de National Instrument via driver ODBC Firebird.
Tout marche OK, sauf qu'a chaque appel de ma PS je vois que la mémoire utilisée croit régulièrement (40Ko environ par appel de PS). Dés que je dépasse la taille de ma RAM cela commence à swapper sur disque et là bien sûr les performances s'écroulent.
Dés que je me déconnecte de la base de données depuis mon application je vois la mémoire qui se libère.
Le principe de mon appli est le suivant :
1) Connexion base de données
2) déclenchement des appels périodiques d'une procédure stockée ( je laisse tourner un temps indéfini ... ) ==> Mémoire utilisée augmente
3) arrêt des appels à la procédure stockée ==> mémoire utilisée stabilisée
4) déconnexion ==> mémoire se libère
Usuellement, lorsqu'une application exploite une base de données, effectue-t-elle une connexion, déconnexion à chaque fois qu'elle fait une requête vers la BDD, ou ne fait-elle qu'une seule connexion, puis traitement de plusieurs requêtes et finalement déconnexion ?
J'ai tenté la première solution pour le principe mais les peformances sont alors trés réduites.
J'aimerai avoir votre avis là-dessus.
Partager