IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Problèmes de performance


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut Problèmes de performance
    Bonjour à tous,

    Sur mon poste de développement, je suis passé de SQLServer 2008 à SQLServer 2017 et je rencontre depuis quelques problèmes de performance générale de SQLServer. Il est lent, les requêtes mettent 2 à 5 fois plus temps à s’exécuter.
    Des scripts qui fonctionnaient très bien sous 2008, sortent souvent en timeout, maintenant.

    Quels sont les paramétrages à regarder et ajuster pour revenir à des performances acceptables ?


    SQLServer Standard 64 bits 14.0.2027.2
    Instance nommée
    Windows 10 PRO 1909 64 bits
    I7-6700 3.4GHz
    16Go de ram

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    1) recalculer toutes les stats en mode FULLSCAN
    2) redimensionner les epsaces de stockage pour éviter les opérations de croissance des fichiers
    3) revoir le plan d'indexation

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Je précise, ce n'est pas une base en particulier qui est lente mais le serveur dans son ensemble.

    Sur ce serveur, je peux monter, démonter, restaurer, créer dynamiquement de toute pièce, jusqu'à une 10ène de bases par jour, des bases qui fonctionnent correctement sur d'autres postes.
    Même les restaurations sont bien plus lentes.
    L'espace de stockage est strictement le même que pour le 2008, même dossier sur le même disque.

    Autre phénomène observé, une requête exécutée en un temps limite raisonnable (pour un poste de dev) une fois, pour se révéler très lente quelques minutes plus tard, comme si à l’instar de Windows, le serveur s'était mis en veille entre-temps et donc avait besoin de plus de temps pour exécuter la requête, le temps de sortir de veille.
    A ma connaissance il n'y a pas de système de veille automatique sur SQLServeur, si ?

    SQLpro> pour les points que tu cite, tu peux donner plus de précision, stp. Bien que j'ai quelques connaissances, je suis pas admin sql. Je suis pas sur de savoir où chercher.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Autres hypothèses :

    1) les bases ne serait_elle pas en mode autoclose ?

    Pour voir et rectifier, lancez la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT name, is_auto_close_on, 'ALTER DATABASE [' + name + '] SET AUTO_CLOSE OFF;' AS SQL_COMMAND
    FROM   sys.databases 
    WHERE  is_auto_close_on = 0;
    Copiez coller le code de la colonne SQL_COMMAND dans une nouvelle fenêtre et exécutez-le.

    2) quelle est la RAM affectées aux instances ?

    Avec 16Go de ram vous devriez mettre 6 Go par instance

    3) le PC serait-il en mode d'économie d'énergie ?

    Si oui désactivez cette fonctionnalité

    Pour recalculer toutes les statistiques en mode FULLSCAN de toutes les bases (sauf systèmes et inaptes) , lancer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE @QRY NVARCHAR(max) = 
    'SELECT N''UPDATE STATISTICS [???].['' + s.name + N''].['' + o.name + N''] (['' + st.name + N'']) WITH FULLSCAN;'' COLLATE French_CI_AI
    FROM   [???].sys.stats AS st
           INNER JOIN [???].sys.objects AS o ON st.object_id = o.object_id
           INNER JOIN [???].sys.schemas AS s ON o.schema_id = s.schema_id';
    DECLARE @SQL NVARCHAR(max) = N'';
    SELECT @SQL = CASE WHEN @SQL = N''  THEN N'' ELSE @SQL + ' UNION ALL ' END  + REPLACE(@QRY, '???', name)
    FROM   sys.databases AS db
    WHERE  database_id > 4
      AND  db.is_read_only = 0
      AND  db.state = 0;
    EXEC (@SQL);
    Copiez, coller le résultat dans une nouvelle fenêtre et exécutez-là.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Bon, retour après quelques jours d'utilisation. Les requêtes n'ont rien changé . J'ai tenter une réparation de l'instance, ainsi que l'install de toutes les mises à jours possibles, le dernier patch cumulatif notamment, cela n'a rien changé non plus.

    Là, je viens de passer 25min à attendre la suppression de 13500 lignes depuis le mode "Modifier toutes les lignes" de SSMS. Ca ne devrait prendre que quelques secondes habituellement.

    Par contre, 2 min après, l'insertion, dans la même table, de 13900 ligne a, elle, pris moins d'une 1s.

    Ce matin, je travaille en parallèle sur un autre serveur, 2017 aussi, au bureau, donc connexion distante, plusieurs 100ène de km, à travers un vpn, malgré les lenteurs inhérentes à ce mode de connexion, c'est nettement plus rapide qu'en local sur mon poste

  6. #6
    Membre très actif Avatar de Bernardos
    Homme Profil pro
    Consultant Senior dba sql server & Microsoft Business Intelligence
    Inscrit en
    Avril 2008
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant Senior dba sql server & Microsoft Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 333
    Par défaut
    Bonjour,
    Moi j'ai eu des soucis lors d'une migration de SQl server 2008 R2 à 2016.
    Certaines requêtes qui était express se sont mis à prendre des 20 minutes.
    C'est un peu loin dans ma mémoire mais de ce que je me souviennes, ca concernait des procedures stockées avec paramètres et pour la plus part des CTE. c'était dans mon cas une histoire de "parameter sniffing".
    Je ne dis pas que c'est ton problème mais en tout cas moi je l'ai eu. je l'avais résolu en utilisant l'option Recompile dans les procédures concernées.
    En sql server 2017 il y a l'option de bases de données Parameter Sniffing mais je pense que c'est le genre de paramètres à utiliser avec beaucoup de précautions (tout comme le recompile).
    Cordialement,

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Bon, retour après quelques jours d'utilisation. Les requêtes n'ont rien changé . J'ai tenter une réparation de l'instance, ainsi que l'install de toutes les mises à jours possibles, le dernier patch cumulatif notamment, cela n'a rien changé non plus.

    Là, je viens de passer 25min à attendre la suppression de 13500 lignes depuis le mode "Modifier toutes les lignes" de SSMS. Ca ne devrait prendre que quelques secondes habituellement.

    Par contre, 2 min après, l'insertion, dans la même table, de 13900 ligne a, elle, pris moins d'une 1s.
    Ceci est un syndrome très classique lié au capacity planning. Si vous avez taillé des espace de stockage important, l'effort à faire pour l'insertion physique est négligeable. En ayant supprimé, vous avez dégagé de l'espace pour les nouvelles insertions..... Donc, voir a bien dimensionner vos espaces de stockage et vérifier la latence de votre disque...

    Ce matin, je travaille en parallèle sur un autre serveur, 2017 aussi, au bureau, donc connexion distante, plusieurs 100ène de km, à travers un vpn, malgré les lenteurs inhérentes à ce mode de connexion, c'est nettement plus rapide qu'en local sur mon poste
    Donc, réellement un problème de PC ou de config....

    Vous n'avez pas répondu à mon précédent post.....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  2. [jeu]problème de performance d'un algo
    Par le Daoud dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 30/05/2005, 16h07
  3. [C#] Probléme de performance avec IsDbNull
    Par jab dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/04/2005, 11h39
  4. [oracle 9i][Workbench]Problème de performance
    Par nuke_y dans le forum Oracle
    Réponses: 6
    Dernier message: 03/02/2005, 17h38
  5. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo