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 28/01/2011, 09h16   #1
Invité de passage
 
Laurent
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Laurent

Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Par défaut [SQL2005][SQLCMD] Problème de performance sur INSERT

Bonjour,

je travaille dans une équipe de 6 personnes faisant le même type de développement.
Voilà ma question à laquelle nous ne trouvons (à 3) aucune réponse:

Nous avons tous la même configuration logicielle mais pour 2 de nos machines (même modèle d'une marque très connue) qui ne sont pas les mêmes que les 4 autres, la même requête va mettre 6 FOIS PLUS DE TEMPS !

Je ne souhaite aucun commentaire sur la façon d'insérer les données car je suis obligé de faire un insert par ligne:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SET NOCOUNT ON
GO
SELECT getdate();
GO
DELETE FROM TABLE;
GO
INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(95816, 1, 1);
GO
INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(95816, 1, 2);
GO
INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(95817, 1, 1);
GO
.../...
INSERT INTO TABLE(ID, ORDRE1,ORDRE2) VALUES(99695, 1, 2);
GO
SELECT getdate();
ainsi, ce fichier contient un peu 39000 enregistrements.

Script lancé à l'aide d'un .bat contenant la commande: sqlcmd -S "%COMPUTERNAME%\SQLEXPRESS" -U "sa" -P "****" -d "DBNAME" -i "test_perf.sql" -o "test_perf.log"

Voici le résultat:

Code :
1
2
3
4
5
-----------------------
2011-01-27 09:50:57.830
 
-----------------------
2011-01-27 09:53:52.470
2' 55" ! Cette même opération sur les 4 autres machines prend moins de 30 secondes.

et sur n'importe quelle table, qu'elle que soit le nombre de lignes à insérer, on a cette différence coeff 6.


Voici la config de ces machines Proc Xeon 2.4; 2,5Go Ram; Disque SAS 150Go@15Krpm

Les 4 autres machines ont des processeurs Core2Duo, quantité Ram identique ou supérieure et disque SATA


Si une personne a une idée lumineuse, nous sommes preneurs.


Merci, à bientôt, Laurent.
LaurentLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 10h10   #2
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
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 723
Points : 6 844
Points : 6 844
Je continue le fil de la discussion depuis msdn

Avez vous vérifié du côté antivirus ?
Règles d'exclusions sur vos fichiers de bases de données (mdf, ldf)

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 10h50   #3
Invité de passage
 
Laurent
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Laurent

Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par mikedavem Voir le message
Je continue le fil de la discussion depuis msdn
Merci d'être sur plusieurs fronts

Citation:
Envoyé par mikedavem Voir le message
Avez vous vérifié du côté antivirus ?
Règles d'exclusions sur vos fichiers de bases de données (mdf, ldf)

++
Non cette vérification n'avait pas été faite, merci
Cependant.... Antivirus activé avec exclusion ou antivirus désactivé:
ça ne change rien ! (gain de 3 sec sur 3 minutes)
LaurentLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 11h10   #4
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
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 723
Points : 6 844
Points : 6 844
Ok pourriez vous fournir pour les résultats de cette requête pour les 2 cas de serveurs (pour un serveur rapide et un serveur qui pose problème) :

Code :
1
2
3
4
5
6
7
SET STATISTICS IO ON;
SET STATISTICS TIME ON;
 
<votrescript.sql>
 
SET STATISTICS IO OFF;
SET STATISTICS TIME OFF;
Pouvez également nous donner la DDL de votre table et des index associés.
Merci

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 11h53   #5
Invité de passage
 
Laurent
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Laurent

Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Merci pour votre aide

Voici donc la DDL de la table:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE [dbo].[MCH](
	[ID] [numeric](8, 0) NOT NULL,
	[ORDRE1] [numeric](5, 0) NOT NULL,
	[ORDRE2] [numeric](8, 0) NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[ID] ASC,
	[ORDRE1] ASC,
	[ORDRE2] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
ALTER TABLE [dbo].[MCH]  WITH CHECK ADD  CONSTRAINT [FK_MCH_HP] FOREIGN KEY([ID], [ORDRE2])
REFERENCES [dbo].[HP] ([ID], [ORDRE2])
GO
ALTER TABLE [dbo].[MCH] CHECK CONSTRAINT [FK_MCH_HP]
GO
ALTER TABLE [dbo].[MCH]  WITH CHECK ADD  CONSTRAINT [FK_MCH_MC] FOREIGN KEY([ID], [ORDRE1])
REFERENCES [dbo].[MC] ([ID], [ORDRE1])
GO
ALTER TABLE [dbo].[MCH] CHECK CONSTRAINT [FK_MCH_MC]
celle de ses 2 index:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
ALTER TABLE [dbo].[MCH] ADD PRIMARY KEY CLUSTERED 
(
	[ID] ASC,
	[ORDRE1] ASC,
	[ORDRE2] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
 
CREATE NONCLUSTERED INDEX [IDX_ID_ORDRE2] ON [dbo].[MCH] 
(
	[ID] ASC,
	[ORDRE2] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
Quant aux résultats de la requête pour les 2 cas de serveurs, j'ai récupéré les 2 logs d'un peu plus de 40mo chacun, je les ai compressé dans un zip que vous pouvez obtenir avec le lien se trouvant dans le mp envoyé.
Les ayant regardé, je ne sais pas si ils vont beaucoup nous apprendre

Merci !
LaurentLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h47   #6
Invité de passage
 
Laurent
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Laurent

Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 0
Points : 0
Bonjour,

Alors, petite correction : la machine qui pose souci à SQL Server tourne sur disque SCSI (et non SAS) connecté à un contrôleur sur bus PCI.
Cependant, à 15Krpm, ceci n'explique pas celà et l'origine du problème reste à prouver.

Un changement de machine a pallié le problème de performance. Celle-ci tourne sur disque SATA II 7200rpm.

Cordialement, Laurent
LaurentLo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2011, 03h41   #7
Membre du Club
 
Inscription : mars 2002
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 52
Points : 58
Points : 58
Bonjour,

Avez vous regardé si vous aviez des erreurs ou warning lié aux I/O dans la log sql server ?
Sur un serveur j'ai récemment rencontré des problèmes lié au process lazy writer qui étaient mis en attente. Il avait du mal à écrire sur le disque dans les délais impartis.
Regardez vos log SQL Server pour éliminer cette éventualité et nous aiguiller sur d'autre piste.

On part du principe que vos bases sont identiques sur tous vos serveurs (fichier de donnée + journaux). Est-ce bien le cas ?

@+
zeus 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 03h41.


 
 
 
 
Partenaires

Hébergement Web