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 20/09/2011, 17h03   #1
Invité régulier
 
Inscription : mai 2003
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 22
Points : 6
Points : 6
Envoyer un message via ICQ à bambino3996
Par défaut Problèmes de performances lors des écritures

Bonjour,

Je rencontre des gros problèmes de performances sur ma base de données.
Surtout les des créations/insertion/update/alter (les lectures sur la base s’exécutent bien rapidement par contre).

Je souhaiterait désactiver les logs sur certaines tables (comme sur du oracle par exemple) mais après de nombreuses recherches pour corriger ce problème de performances il semblerait qu'avec sql server soit les logs sont activées sur toute la base soit sur rien.

Ensuite j'ai lu des choses concernant des défragmentations régulières de la base pour retrouver de meilleures performances etc... mais ce n'est pas envisageable dans mon cas.

Connaîtriez-vous une solution (si possible des actions définitives et non pas des actions a faire de façon régulières sur ma base) pour améliorer les performances d'écriture sur ma base ?

Merci d'avance pour vos conseil et votre aide.
bambino3996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 17h31   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
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 669
Points : 8 729
Points : 8 729
Bonjour,

Citation:
Je souhaiterait désactiver les logs sur certaines tables (comme sur du oracle par exemple) mais après de nombreuses recherches pour corriger ce problème de performances il semblerait qu'avec sql server soit les logs sont activées sur toute la base soit sur rien.
Une telle chose n'est pas possible pour les raisons que j'ai évoquées ici.

Je ne comprends même pas comment un fournisseur de logiciel peut qualifier son moteur de bases de données de relationnel sans garantir l'ACIDité des données.

Citation:
Ensuite j'ai lu des choses concernant des défragmentations régulières de la base pour retrouver de meilleures performances etc... mais ce n'est pas envisageable dans mon cas.
Pouvez-vous nous expliquer pourquoi ce n'est pas possible ?
Je ne sais pas combien de fois j'ai entendu cet argument soutenu par des arguments tout aussi démontables.
Donc je n'ai pas dit que je maintenais les index, et un jour quelqu'un se rend compte "ho pu*ain ça turbine !"

Citation:
Connaîtriez-vous une solution (si possible des actions définitives et non pas des actions a faire de façon régulières sur ma base) pour améliorer les performances d'écriture sur ma base ?
A part la qualité de votre modèle, de vos index, et la maintenance de ceux-ci avec les statistiques de colonne, vous pouvez voir pour du stockage plus rapide.

A mon avis c'est plutôt :

- un défaut de maintenance (le fait de ne pas maintenir les index est une absurdité qui aboutit de toute façon à un gaspillage d'espace du cache de données)
- ou alors vous faites peut-être trop joujou avec TempDB avec des tables temporaires et des variables de type table, et TempDB ne dispose pas de plusieurs fichiers de données
- il y a peut-être trop d'index sur les tables sur lesquelles vous effectuez votre mise à jour.

Malheureusement dans le DDL complet de la table et un descriptif un peu plus complet de ce que vous tentez de faire, de même que votre architecture physique (à savoir partitionnement de tables et répartition des fichiers sur des axes physiques distincts), il va être difficile de vous aider plus précisément.

@++
__________________
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 20/09/2011, 17h46   #3
Invité régulier
 
Inscription : mai 2003
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 22
Points : 6
Points : 6
Envoyer un message via ICQ à bambino3996
Pour vous donner des informations supplémentaires il s'agit d'un progiciel qui fonctionne beaucoup avec des tables temporaires.

La base de données est créée par ce progiciel.

Je n'ai donc pas la main sur les requêtes effectuées par le progiciel pour les optimiser.

La finalité est un service fonctionnant 7/24 et donc sans "horaires de nuit" pour programmer des maintenances.
bambino3996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 17h53   #4
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
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 669
Points : 8 729
Points : 8 729
Citation:
Pour vous donner des informations supplémentaires il s'agit d'un progiciel qui fonctionne beaucoup avec des tables temporaires.
Décidément, j'ai tapé pas loin.
Le problème avec ce genre de tables, c'est qu'à chaque fois que l'on en crée, on doit accéder à des pages "réservées" qui gèrent l'allocation des pages de données.
Évidemment quand on termine une session, la table est supprimée, donc il faut de nouveau accéder à ces pages d'allocation.
Comme ces pages sont peu nombreuses par fichier, il est évident que de la contention se crée : c'est là votre goulot d'étranglement.

Pouvez-vous nous dire combien de fichiers de données contient votre bases de données TempDB ?
Ces fichiers sont ils répartis sur des axes physiques distincts ?
Est-ce que le fichier du journal des transactions et lui aussi sur un axe physique distinct des fichiers de données ?

@++
__________________
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 20/09/2011, 18h05   #5
Invité régulier
 
Inscription : mai 2003
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 22
Points : 6
Points : 6
Envoyer un message via ICQ à bambino3996
En fait je me suis mal exprimé, il ne s'agit pas de tables temporaire au sens de tempDB, il s'agit de table classiques créée/utilisées/supprimées à la volée, par session d'utilisation par exemple (je reconnais que ce progiciel à lui même de gros défauts).

Et sinon la base ainsi que les journaux sont sur le même serveur.
bambino3996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 17h09   #6
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Chef de projets Générix
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
Pour réduire au maximum la fragmentation, il y a d'une part la fragmentation de la base, et de l'autre, celle du FS.
J'ai vu des bases avec une extension automatique de 1 Mo par fichier... et des tables réparties dans une dizaine de fichiers.
Résultat, le disque dur n'était qu'une succession de petits fragments de 1 Mo éparpillés au bout de quelques jours, et je serveur mettait 10 secondes à trouver une ligne à partir d'un index unique...
=> Il faut donc privilégier les extensions manuelles au extension automatiques, et procéder plutôt à des extension de l'ordre de la centaine de Mo (ou du Go) : tant pis s'il faut 6 mois pour remplir la place libre, au moins elle ne sera pas fragmentée.
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 17h33   #7
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
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 669
Points : 8 729
Points : 8 729
Citation:
Envoyé par bambino3996
Et sinon la base ainsi que les journaux sont sur le même serveur.
Oui, mais est-ce que les fichiers de données (si vous n'avez pas changé l'extension, MDF et NDF) et le fichier du journal des transactions (de la même façon, LDF) sont sur des disques physiques distincts ?

Citation:
Envoyé par bambino3996
En fait je me suis mal exprimé, il ne s'agit pas de tables temporaire au sens de tempDB, il s'agit de table classiques créée/utilisées/supprimées à la volée, par session d'utilisation par exemple (je reconnais que ce progiciel à lui même de gros défauts).
Celui-ci en est en tout cas un qui est assez gros.
Si ces tables stockent des quantités de données conséquentes et qu'elles ne sont pas indexées, alors c'est une lecture de table complète pour chaque requête ...
La seule chose que vous pouvez faire je crois c'est de voir avec l'éditeur du logiciel; autant dire que ce n'est pas gagné ...

Citation:
Envoyé par StringBuilder
Pour réduire au maximum la fragmentation, il y a d'une part la fragmentation de la base, et de l'autre, celle du FS.
Vous n'évoquez ici que la fragmentation externe des fichiers, qui n'est certes pas à négliger.
Je pensais aussi à la fragmentation des index, et aussi au nombre de fichiers virtuels du fichier du journal des transactions, qui ne doivent ni être trop nombreux (pour faciliter les grosses transactions) ni trop peu (car le risque de perte de données s'en accroît d'autant).
Pour en savoir un peu plus, vous pouvez lire le billet que j'ai écrit à ce sujet );
__________________
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 21/09/2011, 19h20   #8
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 724
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 724
Points : 6 848
Points : 6 848
Citation:
En fait je me suis mal exprimé, il ne s'agit pas de tables temporaire au sens de tempDB, il s'agit de table classiques créée/utilisées/supprimées à la volée, par session d'utilisation par exemple (je reconnais que ce progiciel à lui même de gros défauts).

Et sinon la base ainsi que les journaux sont sur le même serveur.
Sans plus d'information cela va être dur de déterminer votre problème.

Est ce un problème de ressources ?
Est ce un problème lié à la conception de vos requêtes ?

Est ce que la configuration de votre système est optimale ? Par exemple est ce que votre antivirus a bien les exceptions activés sur vos fichiers de bases de données (mdf, ldf et ndf) en lecture et en écriture ?

...

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h25   #9
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
Citation:
Envoyé par mikedavem Voir le message
Par exemple est ce que votre antivirus a bien les exceptions activés sur vos fichiers de bases de données (mdf, ldf et ndf) en lecture et en écriture ?
Très bonne remarque, j'ai eu le cas il y a 2 semaines avec G-Data... et je peux vous assurer que ça pourri les perfs !
Glouferu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h47.


 
 
 
 
Partenaires

Hébergement Web