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 :

Optimisation d'un serveur SQL 2005


Sujet :

Administration SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 53
    Points
    53
    Par défaut Optimisation d'un serveur SQL 2005
    Bonjour,

    Nous avons un serveur SQL 2005 entreprise installé sous Windows Server 2003 entreprise.
    La mémoire totale du serveur est de 8gb.
    La mémoire du serveur SQL est bridée à 6gb et la totalité est consommée.
    Il reste environ 450mb de libre.

    Il y a plusieurs bases de données sur le serveur dont une qui pèse 16gb et qui contient des milliers de tables (c'est un progiciel de compta) qui contiennent des centaines de milliers de lignes chacune.
    Il nous semble que l'accès au disque est lent.

    Nous souhaiterions créer un nouveau serveur optimisé pour héberger ces bases.
    Que me recommanderiez-vous? (Serveur, OS, mémoire, disques, etc.)

    Merci d'avance!

  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
    21 896
    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 : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Très vaste sujet... D'abord pourquoi avez vous limité SQL Server à 6 Go alors que vous en avez 8 ? pas masochisme ???

    Commencez par lire l'article très généraliste que j'ai écrit, ce sera votre base de départ : http://sqlpro.developpez.com/cours/optimiser/

    Pour un serveur optimal, il nous faudrait connaître de nombreux paramètres comme :
    1) la taille de l'ensemble de vos base (et leur nombre)
    2) le volume transactionnel journalier (par exemple la taille du JT en 14 h en moyenne)
    3) le nombre d'utilisateurs potentiel et simultané
    4) la fenêtre des données de chacune des bases
    5) ce que font les applications (read ou write et quel volume).

    Lisez les article que j'ai écrit sur l'optimisation de SQL Server :
    http://sqlpro.developpez.com/optimisation/

    Sachez que pour un serveur, grosso modo, le nombre de CPU va dépendre du nombre d'utilisateurs et de la volumétrie des tables (le nombre de ligne n'a aucune signification).
    Il est inutile de prendre le dernier proc à la mode, mieux vaut économiser sur le proc et prendre un N-1 ou no intel... Prenez du 64 bits... Le 32 c'est fini !
    En revanche le sous système disque est crucial : mieux vaut multiplexer les disques en RAID 1 et 10 (éviter absolument le RAID 5 ou 6).
    Enfin, la taille de la RAM doit être déterminée par la fenêtre des données. Vous pouvez éventuellement utiliser certains compteur de perfmon pour déterminer cette RAM (cache hit ratio et expected size).

    A +

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Merci pour votre réponse, nous avons limité SQL Server à 6go pour qu'il reste assez de mémoire pour l'application principale qui troune sur ce serveur.
    Je sais qu'il faudrait désolidariser l'application du server SQL, mais ce n'est pas encore à l'ordre du jour...

    Je peux répondre à quelques points mais pas tous:

    1) il y a 9 bases de données, la plus grande fait 16gb, les autres font entre 1go et 2gb
    2) Les bases sont en recovery mode simple (ça nous va comme ça), et les logs font entre 50mo et 650mo, il y a du log shipping sur presque toutes les bases.
    3) je dirais 40 utilisateurs potentiels et simultanés
    4) Comment connaitre la fenêtre des données de chacunes des bases?
    5) L'application fait du read et du write. Comment voir le volume?

    Merci

  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
    21 896
    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 : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par mad_martigan Voir le message
    Merci pour votre réponse, nous avons limité SQL Server à 6go pour qu'il reste assez de mémoire pour l'application principale qui troune sur ce serveur.
    Je sais qu'il faudrait désolidariser l'application du server SQL, mais ce n'est pas encore à l'ordre du jour...
    Alors ne cherchez pas à obtenir des performances ! Parce que en dehors même de la concurrence de RAM il y a aussi concurrence de CPU et de disque. Or SQL est programmé pour être prioritaire sur les ressources physiques, même devant Windows !
    Commencez donc par le commencement et portant votre appli, même sur un serveur à 10 F... Vous verrez que cela ira nettement mieux !

    Citation Envoyé par mad_martigan Voir le message
    Je peux répondre à quelques points mais pas tous:

    1) il y a 9 bases de données, la plus grande fait 16gb, les autres font entre 1go et 2gb
    Quel volume global de DATA (executez sp_spacused sur chaque base...) ?

    Citation Envoyé par mad_martigan Voir le message
    2) Les bases sont en recovery mode simple (ça nous va comme ça), et les logs font entre 50mo et 650mo, il y a du log shipping sur presque toutes les bases.
    Impossible Le Log Shipping, n'est pas compatible avec du simple : "The primary database must use the full or bulk-logged recovery model; switching the database to simple recovery will cause log shipping to stop functioning."
    extrait de http://msdn.microsoft.com/en-us/library/ms187103.aspx

    3) je dirais 40 utilisateurs potentiels et simultanés
    Executez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM sys.dm_exec_sessions WHERE session_id > 50
    Régulièrement et notez la moyenne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    4) Comment connaitre la fenêtre des données de chacunes des bases?
    C'est à vous de calculer cela. Pas évident... Lisez ce que j'ai écrit ici :
    http://sqlpro.developpez.com/optimis...SQLserver1.pdf
    Paragraphe 1.1

    5) L'application fait du read et du write. Comment voir le volume?
    En auditant la journalisation des bases dans le JT sur des périodes données avant de faire une sauvegarde du JT.

    A +

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Alors ne cherchez pas à obtenir des performances ! Parce que en dehors même de la concurrence de RAM il y a aussi concurrence de CPU et de disque. Or SQL est programmé pour être prioritaire sur les ressources physiques, même devant Windows !
    Commencez donc par le commencement et portant votre appli, même sur un serveur à 10 F... Vous verrez que cela ira nettement mieux !
    Ok, nous allons nous occuper de cela.

    Quel volume global de DATA (executez sp_spacused sur chaque base...) ?
    10gb pour la base la plus grosse et environ 1gb en moyenne pour les autres.

    Impossible Le Log Shipping, n'est pas compatible avec du simple : "The primary database must use the full or bulk-logged recovery model; switching the database to simple recovery will cause log shipping to stop functioning."
    extrait de http://msdn.microsoft.com/en-us/library/ms187103.aspx
    Désolé, erreur de ma part, on est bien en full sinon pas de log shipping possible, c'est sûr...

    Je ferai donc la moyenne des connexions, merci.

    C'est à vous de calculer cela. Pas évident... Lisez ce que j'ai écrit ici :
    http://sqlpro.developpez.com/optimis...SQLserver1.pdf
    Paragraphe 1.1

    Citation:
    5) L'application fait du read et du write. Comment voir le volume?
    En auditant la journalisation des bases dans le JT sur des périodes données avant de faire une sauvegarde du JT.
    Ok, je vais regarder le document.

    Merci encore

Discussions similaires

  1. Lister les serveurs SQL 2005 avec SMO en [VB.net]
    Par oli330cd dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/07/2008, 11h46
  2. Renommer un serveur SQL 2005
    Par Philippe Robert dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/02/2008, 08h17
  3. Audit des droits sur un serveur SQL 2005
    Par tibou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/10/2007, 13h29
  4. probleme de connexion entre 2 serveures SQL 2005
    Par SILO dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/04/2007, 15h46
  5. Inscription d'un serveur SQL server 2005 Express
    Par Opo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/04/2006, 13h46

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