Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 20h17   #1
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Par défaut Procédure stockée anormalement lente

Bonjour ,

J'ai une base de donnée sql server qui roulait parfaitement sous sql server 2000, maintenant que je l'ai faite migré a 2005 SP4 , une procédure stockée met 20 mn pour s'executer , alors qu'elle mettait quelques secondes sous sql 2000 , comment y remédier ? merci pour vos aides ,
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 09h57   #2
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 773
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 773
Points : 1 837
Points : 1 837
Toujours, toujours le même genre de demandes et pourtant personne ne comprend qu'avec un simple "c'était mieux avant" on ne peut strictement rien y faire.
On reprend, comme d'habitude :
- config des 2 machines si différentes.
- DDL des tables utilisées
- script de la procédure
etc.

Pourquoi ne comprend que ce genre de demande sans aucune information n'a aucun sens
__________________
Alexandre Chemla - Consultant MS BI chez Masao
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2012, 11h33   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Lors de votre migration, avez-vous pensé à :
1) reconstruire tous les index,
2) recalculées toutes les statistiques de table (_WA_Sys...)
?

Si non, commencez par cela.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2012, 15h57   #4
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Citation:
Envoyé par SQLpro Voir le message
Lors de votre migration, avez-vous pensé à :
1) reconstruire tous les index,
2) recalculées toutes les statistiques de table (_WA_Sys...)
?

Si non, commencez par cela.

A +
Merci de vous intéresser a mon sujet
Je vais tenter de le faire , et je vous tiendrais au courant du résultat
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 11h51   #5
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Citation:
Envoyé par SQLpro Voir le message
Lors de votre migration, avez-vous pensé à :
1) reconstruire tous les index,
2) recalculées toutes les statistiques de table (_WA_Sys...)
?

Si non, commencez par cela.

A +
J'ai reconstruis tous les index

J'ai recalculé toutes les stat de table

j'ai fais un gain de quelques minutes sans plus , la procédure s’exécute en 12mn , ce qui est excessivement long , merci de m'indiquer d'autres pistes éventuelles.
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 15h45   #6
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Sans le plan d'exécution réel, impossible de vous aider plus.

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h47   #7
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Par défaut Plan d'execution

Voici le plan d’exécution tel qu'il est représente lors de l'affichage.
désole pour le retard car alité .
je vous remercie pour toute vos aides
Fichiers attachés
Type de fichier : rar automatic_Ep.rar (49,0 Ko, 18 affichages)
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 17h12   #8
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Ayez au moins un peu de respect pour ceux qui vous aide et postez le texte intégral de votre procédure !!!!

Sinon, quelques conseils :

A moins que ce ne soit des vues, créez les index suivants :

Code :
1
2
3
4
5
CREATE INDEX X_IOB_PERM ON IOB (Permission) WITH (FILLFACTOR = 90);
CREATE INDEX X_Titre_Seance_FIX_NOS ON Titre_Seance (Fixing) INCLUDE ([no_Seance])  WITH (FILLFACTOR = 90);
CREATE INDEX X_Ordres_NOS_TIT  ON Ordres (no_Seance, Titre) WITH (FILLFACTOR = 90);
CREATE INDEX X_PseudoA_VOL ON PseudoA (Volume) WITH (FILLFACTOR = 90);
CREATE INDEX X_PseudoV_VOL ON PseudoV (Volume) WITH (FILLFACTOR = 90);
le coup de COUNT(*) + 1 comme auto incrément est d'une haute stupidité.
Veuillez lire ceci : http://sqlpro.developpez.com/cours/clefs/
Changez votre code.

L'opérateur différence est <> et non !=, exemple
Code :
IF ( SELECT SUM ( Volume ) FROM PseudoA ) !=  ( SELECT SUM ( Volume ) FROM PseudoV )
récrivez ceci avec NOT EXISTS et un AND :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
IF EXISTS ( SELECT *     
              FROM Ordres Ord1
              INNER JOIN Transactions
              ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Acheteur       
              GROUP BY Ord1.Ref_Ordre, Ord1.Volume
              HAVING Ord1.Volume < SUM ( Transactions.Volume ) ) OR
     EXISTS ( SELECT *     
              FROM Ordres Ord1
              INNER JOIN Transactions
              ON Ord1.Ref_Ordre = Transactions.Ref_Ord_Vendeur 
              GROUP BY Ord1.Ref_Ordre, Ord1.Volume
              HAVING Ord1.Volume < SUM ( Transactions.Volume ) )

je ne suis allé que jusqu'au 15e plan...
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2012, 14h59   #9
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Désole mille merci pour vos efforts , je vous publie l’intégralité de la procédure
Fichiers attachés
Type de fichier : txt automatic.txt (4,8 Ko, 13 affichages)
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 17h11   #10
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Citation:
Envoyé par SQLPro
Code :
CREATE INDEX X_Titre_Seance_FIX_NOS ON Titre_Seance (Fixing) INCLUDE ([no_Seance])  WITH (FILLFACTOR = 90);
Je pense qu'il vaudrait mieux que la table Titre_Seance ait un index cluster sur la colonne no_Seance.
D'autre part la colonne Fixing ne semble pas très sélective (peu de valeurs distinctes).
En effet il semble que cette table n'en ait pas (par conséquent pas de clé primaire ni de contrainte d'unicité) puisque le plan montre un RID Lookup.
Placer un index cluster (si c'est possible !) permettrait d'avoir un clustered index seek

Un index ayant pour clé Titre et comme colonne incluse cote aiderait les requêtes n°6, 7 et 8 si un index cluster sur le numéro de séance est possible.

J'ai une question pour le plan n°12 : quelqu'un peut-il m'expliquer pourquoi le Table Spool explose la cardinalité ?
Je rencontre parfois ceci sans comprendre ce qui se passe, et je n'aime pas être dans le flou

Les plans de requête après le n°15 sont relativement similaires à ceux qui sont avant.
Donc en mettant les contraintes de clé primaire et d'unicité comme il se doit, vous devriez vous en sortir à peu près.

D'autre part il semble que la base de données sur laquelle vous avez testé ne contient pas un jeu de données suffisamment conséquent pour faire des tests proches d'un environnement de production.

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 19h05   #11
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Citation:
Envoyé par SQLpro Voir le message
Sinon, quelques conseils :
...
je ne suis allé que jusqu'au 15e plan...

J'ai appliqué tous les changements sans grands résultats malheureusement , la procédure continue d'être trop longue à s'exécuter .

Question : Pourquoi ce problème survient t'il seulement sur La version 2005, La 2000 la faisait fonctionné parfaitement
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 19h24   #12
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Citation:
Envoyé par elsuket Voir le message
D'autre part il semble que la base de données sur laquelle vous avez testé ne contient pas un jeu de données suffisamment conséquent pour faire des tests proches d'un environnement de production.

La base est suffisamment peuplé pour faire les tests que l'on souhaite.

Pourquoi changer les contraintes de clé et d'unicité alors qu'elles marchaient à merveille sur les anciennes moutures Sql server , c'est pas comme si c'était une nouvelle base de donnée jamais testé, non ???
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 13h47   #13
Membre du Club
 
Inscription : décembre 2002
Messages : 82
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 82
Points : 66
Points : 66
Bonjour,

Je n'avais pas répondu jusque la puisque j'avais peur de raconter une connerie, mais rajouter des index ne doit pas avoir d'effet sur vos temps de chargements car le nombre de ligne "estimé" est très faible.

Personnellement, j'ai plus l'impression que le problème vient de la configuration du Server SQL. Lors de la migration, des paramètres ont changé ?
Comme le nombre de CPU utilisé ? la parallélisation ? la mémoire ... etc ?
-> Avez-vous vérifié de ce coté la ?


Cdt,
Glouferu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 15h53   #14
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Citation:
Envoyé par Glouferu Voir le message
Bonjour,

Je n'avais pas répondu jusque la puisque j'avais peur de raconter une connerie, mais rajouter des index ne doit pas avoir d'effet sur vos temps de chargements car le nombre de ligne "estimé" est très faible.

Personnellement, j'ai plus l'impression que le problème vient de la configuration du Server SQL. Lors de la migration, des paramètres ont changé ?
Comme le nombre de CPU utilisé ? la parallélisation ? la mémoire ... etc ?
-> Avez-vous vérifié de ce coté la ?


Cdt,
Merci de vous intéresser au sujet,

J'ai testé la base sur le system hote windows 2008 R2 Sp1 64bits entreprise edition
Le serveur est un Hp proliant proc xeon e5520 @ 2.27 ghz , 8 coeurs , 12gigas Ram ,

j'ai effectivement modifié les entrées dans les proprietes de sql 2005 :
Max degree of parallelism =1
Je n'ai activé qu'1: CPU0

sans résultat

Testé aussi sur une console hyper-v windows 2008 32bits entreprise edition
Pour ce qui est de la console hyper-v , le problème ne se pose pas puisqu'il n'utilise qu'un seul coeur du processeur.

Merci de me donner des pistes de réflexions.
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 15h59   #15
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Quel est le contenu de sp_configure ?

Votre serveur est-il en hyperthreading ? (si oui, desactivez le)

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 16h23   #16
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Citation:
Envoyé par SQLpro Voir le message
Quel est le contenu de sp_configure ?

Votre serveur est-il en hyperthreading ? (si oui, desactivez le)

A +
resultat sp_configure


name minimum maximum config_value run_value
----------------------------------- ----------- ----------- ------------ -----------
allow updates 0 1 0 0
clr enabled 0 1 0 0
cross db ownership chaining 0 1 0 0
default language 0 9999 2 2
max text repl size (B) 0 2147483647 65536 65536
nested triggers 0 1 1 1
remote access 0 1 1 1
remote admin connections 0 1 0 0
remote login timeout (s) 0 2147483647 20 20
remote proc trans 0 1 0 0
remote query timeout (s) 0 2147483647 600 600
server trigger recursion 0 1 1 1
show advanced options 0 1 0 0
user options 0 32767 0 0


hyper-threading desactivé
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 17h20   #17
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Exécutez plutôt :

Code :
1
2
3
4
5
6
7
8
9
10
EXEC sp_configure 'show advanced options', '1'
GO
RECONFIGURE
GO
EXEC sp_configure
GO
EXEC sp_configure 'show advanced options', '0'
GO
RECONFIGURE
GO
Ou plus simple :

Code :
1
2
SELECT	*
FROM	sys.configurations
@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 18h53   #18
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
voici le résultat en pièce jointe
Fichiers attachés
Type de fichier : txt resultat.txt (1,2 Ko, 6 affichages)
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2012, 19h53   #19
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Resultat en pièces jointe de SELECT *
FROM sys.configurations
Fichiers attachés
Type de fichier : rar sys-config.rar (2,7 Ko, 10 affichages)
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 19h13   #20
Invité régulier
 
Avatar de james_usus
 
Inscription : mars 2004
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2004
Messages : 101
Points : 6
Points : 6
Envoyer un message via Yahoo à james_usus
Personne pour me donner une solution ???
james_usus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h45.


 
 
 
 
Partenaires

Hébergement Web