Bonjour à tous,
Nous rencontrons un sérieux problème de fonctionnement sur un site qui utilise SQL Server 2012.
- Nous utilisons SQL 2012 Standard x64 11.0.5058 (SP2) sur une machine équipée de 64Go de ram et 16 coeurs.
- Nous avons environ 50 tables. La plus grosse table de la base fait 140 000 lignes et la moyenne est d'environ 20 000.
- La base est répliquée sur le même serveur. De plus le serveur est dupliqué en temps réel avec Double Take
- Nous avons pour politique interne de n'utiliser que des procédures stockées pour nos requêtes.
Le problème est que les procédures prennent un temps fou à s'éxécuter. Certaines procédures qui mettent quelques millisecondes à s’exécuter en temps normal, prennent certains jours 10 secondes (jusqu'a 25s) à chaque exécution !.
Après de nombreuses investigations, nous avons découvert qu'elles ne restent pas dans le cache.
En fait sur le serveur nous avons environ 200 connexions et 500 PS. Seules 2 d'entre elles restent dans le cache en permanence (pourquoi ces deux là ?), les autre disparaissent toutes d'un coup à intervalles réguliers. Je sais que la recompilation d'une procédure est normal dans le cas de changement de stats par exemple, mais seulement les procédures impactées par ladite stat.
Le buffer cache est utilisé à 10%.
Si on regarde le plan du cache, lorsqu'il y est, le nombre de lignes estimé est souvent délirant pour une des tables. J'ai tenté de mettre à jours les statistiques à la main pour cette table. La performance est meilleure, sans etre au top, et surtout cela reste très provisoire.
Nous avons une grande habitude de SQL Server dans les versions précédentes et nous n'avons jamais rencontré ce problème.
Comment pouvons nous déterminer l'origine du problème ???
Merci pour votre aide !!
Partager