Bonjour à tous, pour une fois c'est moi qui ouvre une discussion...
Je suis en audit chez un client qui se plaint de la lenteur d'une procédure de calcul de besoin depuis qu'il a migré ses serveurs de ORACLE 10 vers SQL SERVER 2008 R2.
Avant d'y aller j'ai pensé a un problème de curseur.... réputés moins performants sous MSSQL...
Bingo... il n'y a que ca...
Maintenant problème: c'est un magnifique ERP derrière tout çà... en l'occurence Dynamics AX en version 3 (old quoi :-)).
En regardant le code (entièrement fait côté client bien sûr) j'ai été choqué de voir que le protocole d'accès aux données (X++) de AX ne savait travailler.... qu'avec parcours de RecordSet... qui génère un curseur pour tous les appels!
La différence de performance est vraiment flagrante (4mn pour ORACLE, + de 8 pour MSSQL!) et inacceptable pour le client...
La solution serait évidemment de réécrire tous cela avec un bonne SP ensembliste qui ferait la même chose en moins d'une minute à n'en pas douter...
Voilà cette discussion juste pour parler de cette différence de performance...
Quelles sont vos expériences là dessus?
NB: j'ai gagné plus d'une minute en désactivant les indexes sur les tables de destination avant de les réactiver mais ca reste vraiment de la petite cuisine...
Je n'ai pas détecte de pression mémoire ou de contention disque (pour la base de test tempDB est sur le même (et unique) disque que les logs et les datas...
Le serveur est une VM sur un ESX les disques sont des 15000 tr/min sur SAN
Partager