Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Performance SQL Server 2000 base 21GO

10 réponses
Avatar
A.B.
Salut!
Mon probl=E8me est le suivant:
Depuis que base a d=E9pass=E9 les 1,5 Go de donn=E9es, les=20
performances se sont d=E9grad=E9s de fa=E7ons vertigineuses!

Plus le volume devient important et plus les perfs se=20
d=E9gradent alors que j'ai un bi-pro Xeon avec 4Go Ram=20
(2*1,5Ghz) Question disque dur pas de soucis.

Apr=E8s quelques observations, j'ai remarqu=E9 que mon server=20
sql 2000 passe soon temps =E0 demander des locks et=20
attendre!=20
Aucune activit=E9 disque ou tr=E8s peu, les CPUs sont entre=20
10 et 20% d'utilisation.
Pas de probl=E8me d'interblocage ni quoi que ce soit=20
d'autres!
En fait, le probl=E8me vient des locks! SS2000 demande en=20
permanance des locks m=EAme quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au=20
niveau de mon serveur et du r=E9seau!!
Je sais qu'il y a moyen de d=E9sactiv=E9 ceci avec=20
l'instruction NOLOCK mais c'est dangereux car =E7a ram=E8ne=20
des donn=E9es fant=F4mes pour reprendre l'expressin de=20
MikeySoft et en plus que SS2000 fait du split=20
r=E9guli=E8rement je vous remets pas une couche sur les=20
perfs!!!! (J'ai plac=E9 le fillfactor =E0 70% et ensuite =E0 50=20
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblit=E9 de pass=E9 par Le READPAST mais il ne me=20
ram=E8ne pas toutes mes donn=E9es. Cette instruction permet=20
de ne ramener que les lignes non verrouill=E9es! Et comme=20
SS2000 lock tout! (Selon MikeySoft SS2000 est=20
intelligent! Selon le cout des lockages SS2000 lock les=20
pages et non les lignes quand il y a beaucoup de lignes =E0=20
lock=E9es!!! Merci MikeySoft!!! Et excellente strat=E9gie!)
On a la possibilit=E9 de chang=E9 =E7a avec Sp_indexOption! =E7a=20
permet de lui sp=E9cifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une ligne!=20
Toujours la m=EAme strat=E9gie de MickeySoft!!

- J'ai restruct=E9 ma base et transform=E9 tout =E7a en groupe=20
de fichiers et fichiers ne d=E9passant pas 500Mo pour=20
profiter =E0 fond du multithread (Je sais j'ai essay=E9=20
qu'avec un seul fichier mais j'ai des tables qui=20
atteignent les 6 Go et les 5 millions de Rows!!! C'est=20
pour ceux qui pourrait me parlait d'un goulot=20
d'etranglement! Non ce n'est pas =E7a qui fait attendre mon=20
serveur) avec des indexes avec un taux de remplissage =E0=20
50% il y a un petit net progr=E8s mais mes locks sont=20
toujours l=E0!
Mes indexes ne sont pas combin=E9s! Car les indexes=20
combin=E9es =E7a ralentit pas mal lors de l'insert/Update!!!!!

Non pour la proposition de passer =E0 Oracle! pas pour=20
l'instant!!! mais j'y pense de plus en plus! =E7a fera du=20
dev en plus!!

Quelqu'un =E0 trouver une solution =E0 ce probl=E8me!
j'ai vu que sur le net bcp de personne rencontrait le=20
m=EAme probl=E8me que moi et il n'ya pas toujours de=20
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir=20
un patch assez rapidement concernant ce probl=E8me de lock!
quand la base est petite ce n'est pas perceptible mais=20
d=E8s qu'elle d=E9passe les 1,5Go =E7a devient un enfer!!

* Pour locker les lignes lors d'un select?=20
* Pourquoi ne pas se contenter d'ignorer les lignes dont=20
les transactions ne sont pas encore COMMITTED et ramener=20
tout le reste en ignorant les locks au niveau Row/Page=20
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez=20
observer ce probl=E8me sur une base en prod qui augmente=20
sensiblement tout les mois, je serai ravi de vous=20
acceuillir sur Paris.=20
Je suis joingnable au vs_net_75@yahoo.fr pour plus=20
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du=20
Miracle!!!

Mais j'aimerais bien savoir comment il ont r=E9ussi =E0 faire=20
fonctionner une base de 1 To alors que d=E8s qu'on d=E9passe=20
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai tr=E8s peu moins de=20
10 par tables En fait j'ai deux table qui contiennent 12=20
index et le reste c'est entre 1 et 5 Index par table!!!!)

Vous =EAtes s=FBre qu'=E0 la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui=20
pourraient se pencher sur la question!!!!

Alors MS?

D=E9sol=E9 d'avoir trop casser du sucre sur le dos des Dev de=20
SS2K.
Mais s'apercevoir que SS2K ne g=E8re pas tr=E8s bien les=20
locks et les VLDB au bout d'un an de dev! C'est frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis d=E9j=E0=20
=E0 21 GO (J'entends d=E9j=E0 des personnes me parlait=20
d'historisation! Non! Je ne peux m=EAme pas le faire! Je ne=20
peux historiser que les donn=E9es de plus de 5 ans!!!)

Un grand merci =E0 tout les gens qui pourrait avoir une=20
id=E9e lumineuse que je n'ai pas test=E9!!!


AB
B=E9ta Testeur SS2K

10 réponses

Avatar
Laurent Moreau
Juste une petite reflexion basée sur mon expérience:

Le fait de mettre NOLOCK sur certaines requetes SELECT retourne des
résultats pas si farfelu que ça.

Sur certains serveurs tres solicités, je gere toute la partie statistic avec
des NOLOCK: car je me dis qu'une stat a un instant T n'aura pas forcement la
meme valeur 10s + tard.

J'ai ainsi récupéré pas mal de ressources, pour des résultats dont jamais
personne n'est venu me dire que c'était faux.

Le tout est de savoir, sur quelles requetes tu peux te permettre de
retourner une valeur non fiable.


Laurent.




"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à 50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K
Avatar
A.B.
En fait, c'est le petit pourcentage qui me fait peur!
Quand tu fais des select à la rigueur c'est pas trop gave
si tu as des données fantômes mais quand tu fait un
insert/ update sur une donnée fantomê ou tu chaines un
nouveau enregistrement un enregistrements fantômes c'est
dangerous!
J'utilise beaucoup la notion de Mere/fille.
Une enregistrement mère au quel je chaines une
enregistrements filles! Si la personne qui saisie chaîne
des enr filles à un enr mère qui est farfelu, je n'ose
même imaginé la suite des conséquences....

Entout cas merci pour ta réponse!

AB




-----Message d'origine-----
Juste une petite reflexion basée sur mon expérience:

Le fait de mettre NOLOCK sur certaines requetes SELECT


retourne des
résultats pas si farfelu que ça.

Sur certains serveurs tres solicités, je gere toute la


partie statistic avec
des NOLOCK: car je me dis qu'une stat a un instant T


n'aura pas forcement la
meme valeur 10s + tard.

J'ai ainsi récupéré pas mal de ressources, pour des


résultats dont jamais
personne n'est venu me dire que c'était faux.

Le tout est de savoir, sur quelles requetes tu peux te


permettre de
retourner une valeur non fiable.


Laurent.




"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à 50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K












.



Avatar
lionelp
Bonjour,

Comment as tu déterminer que SQL Server passait son temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de locks c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo permettra de
déterminer quel spid (ou connexion) bloque les autres, récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel est le mode
d'isolation (au cas où ce serait du serializable très pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à 50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K
Avatar
A.B.
bonjour,
En utilisant les traces sur les locks on peut voir que
SS2K pour une requete select il demande bcp de lock!
il attend dans le sens ou tant qu'il n'a pas obtenu de
lock et comme il en demande bcp il fait attendre les
autres processus!
Pour chaque processus il demande des locks!
Je sais que SS2k choisit de poser les locks, en fait il
ne choisit pas il lock les lignes ou page ou table selon
la stratégie de MS! même quand c'est un select je trouve
ça lourd!
Je rajoute juste une précision, j'ai omis de vous dire
que j'avais récupéré la requête qui me prends le plus de
temps et je l'ai exécutée via l'analyseur de requete un
soir quand il n'y a plus personnes de connecter! Donc
plus de traffic réseaux, plus de connexions au serveur
NT5 ni à SS2k!
Résultat: aussi lent que si elle était exécuté via
l'appli VB!

Même avec personne de connecter, ça pose problème!

* Pour revenir au niveau de transaction! c'est le niveau
readcommitted celui par defaut de ss2k!
* je n'ai pas de trigger sur aucune de table je trouve ça
pénalisant quand on a une table depassant les 5Millions
de lignes!!

Merci à tous!
AB




-----Message d'origine-----
Bonjour,

Comment as tu déterminer que SQL Server passait son


temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de locks


c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce


sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo


permettra de
déterminer quel spid (ou connexion) bloque les autres,


récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel


est le mode
d'isolation (au cas où ce serait du serializable très


pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus


longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à 50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K











.



Avatar
lionelp
Bonjour,

Donc si la requête toute seule est "lente", ce n'est pas un problème de lock
mais purement de temps d'exécution. Il faut arrêter de se focaliser sur les
locks et plutôt regarder à optimiser la requête. Et merci de m'expliquer
comment ça marche ;).


Cordialement,
LionelP



"A.B." wrote in message
news:09a801c355a9$41f93170$
bonjour,
En utilisant les traces sur les locks on peut voir que
SS2K pour une requete select il demande bcp de lock!
il attend dans le sens ou tant qu'il n'a pas obtenu de
lock et comme il en demande bcp il fait attendre les
autres processus!
Pour chaque processus il demande des locks!
Je sais que SS2k choisit de poser les locks, en fait il
ne choisit pas il lock les lignes ou page ou table selon
la stratégie de MS! même quand c'est un select je trouve
ça lourd!
Je rajoute juste une précision, j'ai omis de vous dire
que j'avais récupéré la requête qui me prends le plus de
temps et je l'ai exécutée via l'analyseur de requete un
soir quand il n'y a plus personnes de connecter! Donc
plus de traffic réseaux, plus de connexions au serveur
NT5 ni à SS2k!
Résultat: aussi lent que si elle était exécuté via
l'appli VB!

Même avec personne de connecter, ça pose problème!

* Pour revenir au niveau de transaction! c'est le niveau
readcommitted celui par defaut de ss2k!
* je n'ai pas de trigger sur aucune de table je trouve ça
pénalisant quand on a une table depassant les 5Millions
de lignes!!

Merci à tous!
AB




-----Message d'origine-----
Bonjour,

Comment as tu déterminer que SQL Server passait son


temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de locks


c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce


sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo


permettra de
déterminer quel spid (ou connexion) bloque les autres,


récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel


est le mode
d'isolation (au cas où ce serait du serializable très


pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus


longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à 50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K











.



Avatar
A.B.
Bonjour,
tout d'abord! Merci de me répondre.
C'est l'exécutiond ela requête qui est lente du aux
problèmes que j'exposais!
La requte on ne peut l'optimiser à moins de denormaliser!
Il y a 7 tables dans ma requete, Dont 4 volumineuses.
une table de reference des diffuseurs DI = 350
une table des sequence de diffusions SQ = 5531441
Une des oeuvres OE= 6816776
une des titres TI= 6714485
une des doubleurs AYDD= 0
une des ayant droits AD= 8974815
et pour finir la liste des ayant droit pour une oeuvre
LAD = 8974809
voila ma jointure sans les with(nolock) et sans les
with index ()
********************************************************
R_DIFFUSEUR DI
INNER JOIN D_SEQUENCE_DIFFUSION SQ
INNER JOIN D_OEUVRE OE ON SQ.fk_oeuvre_diffuseur =
OE.pk_oeuvre
INNER JOIN D_TITRE TI
ON SQ.fk_Index_titre = TI.pk_Index_Titre ON
DI.pk_Id_Diffuseur = SQ.fk_Id_Diffuseur
LEFT OUTER JOIN
D_AYANT_DROIT_DOUBLEUR AYDD RIGHT OUTER JOIN
D_AYANT_DROIT AD INNER JOIN
L_AYANT_DROIT LAD ON AD.pk_ayant_droit =
LAD.pk_ayant_droit
ON AYDD.pk_ayant_droit_doubleur = AD.pk_ayant_droit ON
OE.pk_oeuvre = LAD.pk_oeuvre!
********************************************************

J'ai des problèmes de lenteurs même quand je fais un
pauvre insert dans ces tables!
ça peut aller de 30s à 2 voire 5 min.
J'ai pensé aux index mais je ne peux pas les supprimer
j'en ai besion!
On a d'un côté une oeuvre (D_OEUVRE)qui peut avoir 1 à X
titres (D_TITRE)
Chaque oeuvre appartient de 1 à Y auteurs (L_AYANT_DROIT
et D_AYANT_DROIT) il peut y avoir des doubleur mais cette
table pour l'instant est vide. Normalement elle ne
contient que le numéro de l'ayant droit de la table
D_AYANT_DROIT si doubleur il y a(L_AYANT_DROIT_DOUBLEUR).
cette oeuvre est diffusés sur une chaine exemple (France
2 (R_DIFFUSEUR)) et ceci constitue une diffusion à une
date présice et une heure précise. On appelle ça une
sequence de diffusion (D_SEQUENCE_DIFFUSION).
Image les chaines Hertziennes + cables+ satellites+
radios...
ça en fait du volume à traiter!
poue revenir à ma requete!
les utilisateurs font un filtre sur une période date et
sur un diffuseur! (Exemple Diffuseur FRANCE 2 periode
01/01/2002 à 15/01/2002! qui ramenent un milliers de
lignes! (En moyenne 3 à 4 milles lignes)!!

le volume à recupérer n'est pas enorme!
Si tu as ou vous avez des pistes d'optimisations je suis
preneurs!!

Merci d'avance!
AB


-----Message d'origine-----
Bonjour,

Donc si la requête toute seule est "lente", ce n'est pas


un problème de lock
mais purement de temps d'exécution. Il faut arrêter de


se focaliser sur les
locks et plutôt regarder à optimiser la requête. Et


merci de m'expliquer
comment ça marche ;).


Cordialement,
LionelP



"A.B." wrote in message
news:09a801c355a9$41f93170$
bonjour,
En utilisant les traces sur les locks on peut voir que
SS2K pour une requete select il demande bcp de lock!
il attend dans le sens ou tant qu'il n'a pas obtenu de
lock et comme il en demande bcp il fait attendre les
autres processus!
Pour chaque processus il demande des locks!
Je sais que SS2k choisit de poser les locks, en fait il
ne choisit pas il lock les lignes ou page ou table selon
la stratégie de MS! même quand c'est un select je trouve
ça lourd!
Je rajoute juste une précision, j'ai omis de vous dire
que j'avais récupéré la requête qui me prends le plus de
temps et je l'ai exécutée via l'analyseur de requete un
soir quand il n'y a plus personnes de connecter! Donc
plus de traffic réseaux, plus de connexions au serveur
NT5 ni à SS2k!
Résultat: aussi lent que si elle était exécuté via
l'appli VB!

Même avec personne de connecter, ça pose problème!

* Pour revenir au niveau de transaction! c'est le niveau
readcommitted celui par defaut de ss2k!
* je n'ai pas de trigger sur aucune de table je trouve ça
pénalisant quand on a une table depassant les 5Millions
de lignes!!

Merci à tous!
AB




-----Message d'origine-----
Bonjour,

Comment as tu déterminer que SQL Server passait son


temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de locks


c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce


sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo


permettra de
déterminer quel spid (ou connexion) bloque les autres,


récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel


est le mode
d'isolation (au cas où ce serait du serializable très


pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus


longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon




server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à




50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne




me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes




à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une




ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre




mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de




lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à




faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins




de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par




table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev




de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je




ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K











.





.



Avatar
Med Bouchenafa[MVP]
Je viens de mettre sur le site frenchsql un certain nombre de liens
concernant le problème des performances et des verrous
http://www.frenchsql.com/Default.aspx?page


--
Salutations
Med Bouchenafa
TETRASET
75015 Paris

"A.B." wrote in message
news:0a4401c35678$0c5299b0$
Bonjour,
tout d'abord! Merci de me répondre.
C'est l'exécutiond ela requête qui est lente du aux
problèmes que j'exposais!
La requte on ne peut l'optimiser à moins de denormaliser!
Il y a 7 tables dans ma requete, Dont 4 volumineuses.
une table de reference des diffuseurs DI = 350
une table des sequence de diffusions SQ = 5531441
Une des oeuvres OE= 6816776
une des titres TI= 6714485
une des doubleurs AYDD= 0
une des ayant droits AD= 8974815
et pour finir la liste des ayant droit pour une oeuvre
LAD = 8974809
voila ma jointure sans les with(nolock) et sans les
with index ()
********************************************************
R_DIFFUSEUR DI
INNER JOIN D_SEQUENCE_DIFFUSION SQ
INNER JOIN D_OEUVRE OE ON SQ.fk_oeuvre_diffuseur OE.pk_oeuvre
INNER JOIN D_TITRE TI
ON SQ.fk_Index_titre = TI.pk_Index_Titre ON
DI.pk_Id_Diffuseur = SQ.fk_Id_Diffuseur
LEFT OUTER JOIN
D_AYANT_DROIT_DOUBLEUR AYDD RIGHT OUTER JOIN
D_AYANT_DROIT AD INNER JOIN
L_AYANT_DROIT LAD ON AD.pk_ayant_droit LAD.pk_ayant_droit
ON AYDD.pk_ayant_droit_doubleur = AD.pk_ayant_droit ON
OE.pk_oeuvre = LAD.pk_oeuvre!
********************************************************

J'ai des problèmes de lenteurs même quand je fais un
pauvre insert dans ces tables!
ça peut aller de 30s à 2 voire 5 min.
J'ai pensé aux index mais je ne peux pas les supprimer
j'en ai besion!
On a d'un côté une oeuvre (D_OEUVRE)qui peut avoir 1 à X
titres (D_TITRE)
Chaque oeuvre appartient de 1 à Y auteurs (L_AYANT_DROIT
et D_AYANT_DROIT) il peut y avoir des doubleur mais cette
table pour l'instant est vide. Normalement elle ne
contient que le numéro de l'ayant droit de la table
D_AYANT_DROIT si doubleur il y a(L_AYANT_DROIT_DOUBLEUR).
cette oeuvre est diffusés sur une chaine exemple (France
2 (R_DIFFUSEUR)) et ceci constitue une diffusion à une
date présice et une heure précise. On appelle ça une
sequence de diffusion (D_SEQUENCE_DIFFUSION).
Image les chaines Hertziennes + cables+ satellites+
radios...
ça en fait du volume à traiter!
poue revenir à ma requete!
les utilisateurs font un filtre sur une période date et
sur un diffuseur! (Exemple Diffuseur FRANCE 2 periode
01/01/2002 à 15/01/2002! qui ramenent un milliers de
lignes! (En moyenne 3 à 4 milles lignes)!!

le volume à recupérer n'est pas enorme!
Si tu as ou vous avez des pistes d'optimisations je suis
preneurs!!

Merci d'avance!
AB


-----Message d'origine-----
Bonjour,

Donc si la requête toute seule est "lente", ce n'est pas


un problème de lock
mais purement de temps d'exécution. Il faut arrêter de


se focaliser sur les
locks et plutôt regarder à optimiser la requête. Et


merci de m'expliquer
comment ça marche ;).


Cordialement,
LionelP



"A.B." wrote in message
news:09a801c355a9$41f93170$
bonjour,
En utilisant les traces sur les locks on peut voir que
SS2K pour une requete select il demande bcp de lock!
il attend dans le sens ou tant qu'il n'a pas obtenu de
lock et comme il en demande bcp il fait attendre les
autres processus!
Pour chaque processus il demande des locks!
Je sais que SS2k choisit de poser les locks, en fait il
ne choisit pas il lock les lignes ou page ou table selon
la stratégie de MS! même quand c'est un select je trouve
ça lourd!
Je rajoute juste une précision, j'ai omis de vous dire
que j'avais récupéré la requête qui me prends le plus de
temps et je l'ai exécutée via l'analyseur de requete un
soir quand il n'y a plus personnes de connecter! Donc
plus de traffic réseaux, plus de connexions au serveur
NT5 ni à SS2k!
Résultat: aussi lent que si elle était exécuté via
l'appli VB!

Même avec personne de connecter, ça pose problème!

* Pour revenir au niveau de transaction! c'est le niveau
readcommitted celui par defaut de ss2k!
* je n'ai pas de trigger sur aucune de table je trouve ça
pénalisant quand on a une table depassant les 5Millions
de lignes!!

Merci à tous!
AB




-----Message d'origine-----
Bonjour,

Comment as tu déterminer que SQL Server passait son


temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de locks


c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce


sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo


permettra de
déterminer quel spid (ou connexion) bloque les autres,


récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel


est le mode
d'isolation (au cas où ce serait du serializable très


pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus


longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon




server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à




50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne




me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes




à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une




ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre




mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de




lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à




faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins




de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par




table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev




de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je




ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K











.





.



Avatar
lionelp
Bonjour,

jointures externes ==> table scan, le volume parcourru est important pas de
miracle
insert qui dure des dizaines de secondes (insert d'une ligne ?, bref il faut
développer) ==>table fragmentée?==>pas d'index cluster?
il faut des index cluster

ce que je ferai:
S'il y a des stats auto sur les tables, les supprimer

set statistics io on
go
exec du select
==> voir s'il y a des lectures logiques et physiques, identifier rapidement
là où il y a bcp d'IO

set showplan_all on
go
exec select
==> cardinalitées et coûts estimés

set statistics profile on
go
exec select
==> cardinalmitées et coûts réels

Tu peux alors comparer avec l'estimation pour voirsi les stats ne sont pas
obsolètes, ou si certaines estimations sont fausses.


la jointure je la réécrierais comme ça pour plus de lisibilité (il doit bien
avoir une joiture externe du mauvais côté) et plus juste:
R_DIFFUSEUR DI
INNER JOIN D_SEQUENCE_DIFFUSION SQ
ON DI.pk_Id_Diffuseur = SQ.fk_Id_Diffuseur

INNER JOIN D_OEUVRE OE
ON SQ.fk_oeuvre_diffuseur = OE.pk_oeuvre

INNER JOIN D_TITRE TI
ON SQ.fk_Index_titre = TI.pk_Index_Titre

RIGHT OUTER JOIN L_AYANT_DROIT LAD
ON LAD.pk_oeuvre = OE.pk_oeuvre

INNER JOIN D_AYANT_DROIT AD
ON LAD.pk_ayant_droit = AD.pk_ayant_droit

LEFT OUTER JOIN D_AYANT_DROIT_DOUBLEUR AYDD
ON AYDD.pk_ayant_droit_doubleur = AD.pk_ayant_droit


Cordialement,
LionelP



"A.B." wrote in message
news:0a4401c35678$0c5299b0$
Bonjour,
tout d'abord! Merci de me répondre.
C'est l'exécutiond ela requête qui est lente du aux
problèmes que j'exposais!
La requte on ne peut l'optimiser à moins de denormaliser!
Il y a 7 tables dans ma requete, Dont 4 volumineuses.
une table de reference des diffuseurs DI = 350
une table des sequence de diffusions SQ = 5531441
Une des oeuvres OE= 6816776
une des titres TI= 6714485
une des doubleurs AYDD= 0
une des ayant droits AD= 8974815
et pour finir la liste des ayant droit pour une oeuvre
LAD = 8974809
voila ma jointure sans les with(nolock) et sans les
with index ()
********************************************************
R_DIFFUSEUR DI
INNER JOIN D_SEQUENCE_DIFFUSION SQ
INNER JOIN D_OEUVRE OE ON SQ.fk_oeuvre_diffuseur OE.pk_oeuvre
INNER JOIN D_TITRE TI
ON SQ.fk_Index_titre = TI.pk_Index_Titre ON
DI.pk_Id_Diffuseur = SQ.fk_Id_Diffuseur
LEFT OUTER JOIN
D_AYANT_DROIT_DOUBLEUR AYDD RIGHT OUTER JOIN
D_AYANT_DROIT AD INNER JOIN
L_AYANT_DROIT LAD ON AD.pk_ayant_droit LAD.pk_ayant_droit
ON AYDD.pk_ayant_droit_doubleur = AD.pk_ayant_droit ON
OE.pk_oeuvre = LAD.pk_oeuvre!
********************************************************

J'ai des problèmes de lenteurs même quand je fais un
pauvre insert dans ces tables!
ça peut aller de 30s à 2 voire 5 min.
J'ai pensé aux index mais je ne peux pas les supprimer
j'en ai besion!
On a d'un côté une oeuvre (D_OEUVRE)qui peut avoir 1 à X
titres (D_TITRE)
Chaque oeuvre appartient de 1 à Y auteurs (L_AYANT_DROIT
et D_AYANT_DROIT) il peut y avoir des doubleur mais cette
table pour l'instant est vide. Normalement elle ne
contient que le numéro de l'ayant droit de la table
D_AYANT_DROIT si doubleur il y a(L_AYANT_DROIT_DOUBLEUR).
cette oeuvre est diffusés sur une chaine exemple (France
2 (R_DIFFUSEUR)) et ceci constitue une diffusion à une
date présice et une heure précise. On appelle ça une
sequence de diffusion (D_SEQUENCE_DIFFUSION).
Image les chaines Hertziennes + cables+ satellites+
radios...
ça en fait du volume à traiter!
poue revenir à ma requete!
les utilisateurs font un filtre sur une période date et
sur un diffuseur! (Exemple Diffuseur FRANCE 2 periode
01/01/2002 à 15/01/2002! qui ramenent un milliers de
lignes! (En moyenne 3 à 4 milles lignes)!!

le volume à recupérer n'est pas enorme!
Si tu as ou vous avez des pistes d'optimisations je suis
preneurs!!

Merci d'avance!
AB


-----Message d'origine-----
Bonjour,

Donc si la requête toute seule est "lente", ce n'est pas


un problème de lock
mais purement de temps d'exécution. Il faut arrêter de


se focaliser sur les
locks et plutôt regarder à optimiser la requête. Et


merci de m'expliquer
comment ça marche ;).


Cordialement,
LionelP



"A.B." wrote in message
news:09a801c355a9$41f93170$
bonjour,
En utilisant les traces sur les locks on peut voir que
SS2K pour une requete select il demande bcp de lock!
il attend dans le sens ou tant qu'il n'a pas obtenu de
lock et comme il en demande bcp il fait attendre les
autres processus!
Pour chaque processus il demande des locks!
Je sais que SS2k choisit de poser les locks, en fait il
ne choisit pas il lock les lignes ou page ou table selon
la stratégie de MS! même quand c'est un select je trouve
ça lourd!
Je rajoute juste une précision, j'ai omis de vous dire
que j'avais récupéré la requête qui me prends le plus de
temps et je l'ai exécutée via l'analyseur de requete un
soir quand il n'y a plus personnes de connecter! Donc
plus de traffic réseaux, plus de connexions au serveur
NT5 ni à SS2k!
Résultat: aussi lent que si elle était exécuté via
l'appli VB!

Même avec personne de connecter, ça pose problème!

* Pour revenir au niveau de transaction! c'est le niveau
readcommitted celui par defaut de ss2k!
* je n'ai pas de trigger sur aucune de table je trouve ça
pénalisant quand on a une table depassant les 5Millions
de lignes!!

Merci à tous!
AB




-----Message d'origine-----
Bonjour,

Comment as tu déterminer que SQL Server passait son


temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de locks


c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce


sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo


permettra de
déterminer quel spid (ou connexion) bloque les autres,


récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel


est le mode
d'isolation (au cas où ce serait du serializable très


pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus


longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon




server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à




50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne




me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes




à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption! ça
permet de lui spécifier le lock par Row et non par page!
Mais SS2000 choisit de lock une table aulieu d'une




ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre




mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous sortir
un patch assez rapidement concernant ce problème de




lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes dont
les transactions ne sont pas encore COMMITTED et ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à




faire
fonctionner une base de 1 To alors que dès qu'on dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins




de
10 par tables En fait j'ai deux table qui contiennent 12
index et le reste c'est entre 1 et 5 Index par




table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev




de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je




ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K











.





.



Avatar
A.B.
Bonjour,
Je vais tester tes Recommandations!!

Depuis ce matin je procède à des tests avec les nolock et
en forçant le choix de l'index ( From Table_Name WITH
(NOLOCK),INDEX(Index_name)) je gange pas mal en perf pour
un select!
(Pour une periode de 2 mois je récupère 50000lignes via
l'analyseur de Req entre 20s et 1 min) Par rapport à
avant j'ai divisé les temps par 4 voire par 5!!!
Mais j'ai toujours le problèmes au niveau des
Insert/Update (Je me paie des expirations de délai plus
fréquemment (Tps Expirationdélai plus de 10 min!!)) ===>
je continue à creuser sur le Pb Insert/Update!!

En ce qui concerne les index en cluster, j'en ai qu'un
seul par table (De toute façon on ne peut pas en mettre
plus d'un par table via MSEM!!)


un grand merci pour votre aide!
AB



-----Message d'origine-----
Bonjour,

jointures externes ==> table scan, le volume parcourru


est important pas de
miracle
insert qui dure des dizaines de secondes (insert d'une


ligne ?, bref il faut
développer) ==>table fragmentée?==>pas d'index cluster?
il faut des index cluster

ce que je ferai:
S'il y a des stats auto sur les tables, les supprimer

set statistics io on
go
exec du select
==> voir s'il y a des lectures logiques et physiques,


identifier rapidement
là où il y a bcp d'IO

set showplan_all on
go
exec select
==> cardinalitées et coûts estimés

set statistics profile on
go
exec select
==> cardinalmitées et coûts réels

Tu peux alors comparer avec l'estimation pour voirsi les


stats ne sont pas
obsolètes, ou si certaines estimations sont fausses.


la jointure je la réécrierais comme ça pour plus de


lisibilité (il doit bien
avoir une joiture externe du mauvais côté) et plus juste:
R_DIFFUSEUR DI
INNER JOIN D_SEQUENCE_DIFFUSION SQ
ON DI.pk_Id_Diffuseur = SQ.fk_Id_Diffuseur

INNER JOIN D_OEUVRE OE
ON SQ.fk_oeuvre_diffuseur = OE.pk_oeuvre

INNER JOIN D_TITRE TI
ON SQ.fk_Index_titre = TI.pk_Index_Titre

RIGHT OUTER JOIN L_AYANT_DROIT LAD
ON LAD.pk_oeuvre = OE.pk_oeuvre

INNER JOIN D_AYANT_DROIT AD
ON LAD.pk_ayant_droit = AD.pk_ayant_droit

LEFT OUTER JOIN D_AYANT_DROIT_DOUBLEUR AYDD
ON AYDD.pk_ayant_droit_doubleur = AD.pk_ayant_droit


Cordialement,
LionelP



"A.B." wrote in message
news:0a4401c35678$0c5299b0$
Bonjour,
tout d'abord! Merci de me répondre.
C'est l'exécutiond ela requête qui est lente du aux
problèmes que j'exposais!
La requte on ne peut l'optimiser à moins de denormaliser!
Il y a 7 tables dans ma requete, Dont 4 volumineuses.
une table de reference des diffuseurs DI = 350
une table des sequence de diffusions SQ = 5531441
Une des oeuvres OE= 6816776
une des titres TI= 6714485
une des doubleurs AYDD= 0
une des ayant droits AD= 8974815
et pour finir la liste des ayant droit pour une oeuvre
LAD = 8974809
voila ma jointure sans les with(nolock) et sans les
with index ()
********************************************************
R_DIFFUSEUR DI
INNER JOIN D_SEQUENCE_DIFFUSION SQ
INNER JOIN D_OEUVRE OE ON SQ.fk_oeuvre_diffuseur =
OE.pk_oeuvre
INNER JOIN D_TITRE TI
ON SQ.fk_Index_titre = TI.pk_Index_Titre ON
DI.pk_Id_Diffuseur = SQ.fk_Id_Diffuseur
LEFT OUTER JOIN
D_AYANT_DROIT_DOUBLEUR AYDD RIGHT OUTER JOIN
D_AYANT_DROIT AD INNER JOIN
L_AYANT_DROIT LAD ON AD.pk_ayant_droit =
LAD.pk_ayant_droit
ON AYDD.pk_ayant_droit_doubleur = AD.pk_ayant_droit ON
OE.pk_oeuvre = LAD.pk_oeuvre!
********************************************************

J'ai des problèmes de lenteurs même quand je fais un
pauvre insert dans ces tables!
ça peut aller de 30s à 2 voire 5 min.
J'ai pensé aux index mais je ne peux pas les supprimer
j'en ai besion!
On a d'un côté une oeuvre (D_OEUVRE)qui peut avoir 1 à X
titres (D_TITRE)
Chaque oeuvre appartient de 1 à Y auteurs (L_AYANT_DROIT
et D_AYANT_DROIT) il peut y avoir des doubleur mais cette
table pour l'instant est vide. Normalement elle ne
contient que le numéro de l'ayant droit de la table
D_AYANT_DROIT si doubleur il y a(L_AYANT_DROIT_DOUBLEUR).
cette oeuvre est diffusés sur une chaine exemple (France
2 (R_DIFFUSEUR)) et ceci constitue une diffusion à une
date présice et une heure précise. On appelle ça une
sequence de diffusion (D_SEQUENCE_DIFFUSION).
Image les chaines Hertziennes + cables+ satellites+
radios...
ça en fait du volume à traiter!
poue revenir à ma requete!
les utilisateurs font un filtre sur une période date et
sur un diffuseur! (Exemple Diffuseur FRANCE 2 periode
01/01/2002 à 15/01/2002! qui ramenent un milliers de
lignes! (En moyenne 3 à 4 milles lignes)!!

le volume à recupérer n'est pas enorme!
Si tu as ou vous avez des pistes d'optimisations je suis
preneurs!!

Merci d'avance!
AB


-----Message d'origine-----
Bonjour,

Donc si la requête toute seule est "lente", ce n'est pas


un problème de lock
mais purement de temps d'exécution. Il faut arrêter de


se focaliser sur les
locks et plutôt regarder à optimiser la requête. Et


merci de m'expliquer
comment ça marche ;).


Cordialement,
LionelP



"A.B." wrote in message
news:09a801c355a9$41f93170$
bonjour,
En utilisant les traces sur les locks on peut voir que
SS2K pour une requete select il demande bcp de lock!
il attend dans le sens ou tant qu'il n'a pas obtenu de
lock et comme il en demande bcp il fait attendre les
autres processus!
Pour chaque processus il demande des locks!
Je sais que SS2k choisit de poser les locks, en fait il
ne choisit pas il lock les lignes ou page ou table selon
la stratégie de MS! même quand c'est un select je trouve
ça lourd!
Je rajoute juste une précision, j'ai omis de vous dire
que j'avais récupéré la requête qui me prends le plus de
temps et je l'ai exécutée via l'analyseur de requete un
soir quand il n'y a plus personnes de connecter! Donc
plus de traffic réseaux, plus de connexions au serveur
NT5 ni à SS2k!
Résultat: aussi lent que si elle était exécuté via
l'appli VB!

Même avec personne de connecter, ça pose problème!

* Pour revenir au niveau de transaction! c'est le niveau
readcommitted celui par defaut de ss2k!
* je n'ai pas de trigger sur aucune de table je trouve




ça
pénalisant quand on a une table depassant les 5Millions
de lignes!!

Merci à tous!
AB




-----Message d'origine-----
Bonjour,

Comment as tu déterminer que SQL Server passait son


temps à demander des
locks et à attendre. SQL Server ne demande pas ¨de






locks
c'est lui qui
choisit de les poser, ce n'est pas lui qui attend ce


sont les connexions
(spid), donc, un suivi de sysprocesses et syslockinfo


permettra de
déterminer quel spid (ou connexion) bloque les autres,


récupérer la requête
qu'il exécute, si elle génère un ou des scan(s), quel


est le mode
d'isolation (au cas où ce serait du serializable très


pénalisant), s'il n'y
a pas de trigger dont l'exécution est de plus en plus


longue, ...

Cordialement,
LionelP


"A.B." wrote in message
news:069701c35504$ac3ec1d0$
Salut!
Mon problème est le suivant:
Depuis que base a dépassé les 1,5 Go de données, les
performances se sont dégradés de façons vertigineuses!

Plus le volume devient important et plus les perfs se
dégradent alors que j'ai un bi-pro Xeon avec 4Go Ram
(2*1,5Ghz) Question disque dur pas de soucis.

Après quelques observations, j'ai remarqué que mon




server
sql 2000 passe soon temps à demander des locks et
attendre!
Aucune activité disque ou très peu, les CPUs sont entre
10 et 20% d'utilisation.
Pas de problème d'interblocage ni quoi que ce soit
d'autres!
En fait, le problème vient des locks! SS2000 demande en
permanance des locks même quand il fait un select!
En se demande pourquoi?
Ce lockage en permanance provoque des ralentissement au
niveau de mon serveur et du réseau!!
Je sais qu'il y a moyen de désactivé ceci avec
l'instruction NOLOCK mais c'est dangereux car ça ramène
des données fantômes pour reprendre l'expressin de
MikeySoft et en plus que SS2000 fait du split
régulièrement je vous remets pas une couche sur les
perfs!!!! (J'ai placé le fillfactor à 70% et ensuite à




50
et 20! Rien pas de changemens notables!!!! ) !
On a la possiblité de passé par Le READPAST mais il ne




me
ramène pas toutes mes données. Cette instruction permet
de ne ramener que les lignes non verrouillées! Et comme
SS2000 lock tout! (Selon MikeySoft SS2000 est
intelligent! Selon le cout des lockages SS2000 lock les
pages et non les lignes quand il y a beaucoup de lignes




à
lockées!!! Merci MikeySoft!!! Et excellente stratégie!)
On a la possibilité de changé ça avec Sp_indexOption!






ça
permet de lui spécifier le lock par Row et non par






page!
Mais SS2000 choisit de lock une table aulieu d'une




ligne!
Toujours la même stratégie de MickeySoft!!

- J'ai restructé ma base et transformé tout ça en






groupe
de fichiers et fichiers ne dépassant pas 500Mo pour
profiter à fond du multithread (Je sais j'ai essayé
qu'avec un seul fichier mais j'ai des tables qui
atteignent les 6 Go et les 5 millions de Rows!!! C'est
pour ceux qui pourrait me parlait d'un goulot
d'etranglement! Non ce n'est pas ça qui fait attendre




mon
serveur) avec des indexes avec un taux de remplissage à
50% il y a un petit net progrès mais mes locks sont
toujours là!
Mes indexes ne sont pas combinés! Car les indexes
combinées ça ralentit pas mal lors de


l'insert/Update!!!!!

Non pour la proposition de passer à Oracle! pas pour
l'instant!!! mais j'y pense de plus en plus! ça fera du
dev en plus!!

Quelqu'un à trouver une solution à ce problème!
j'ai vu que sur le net bcp de personne rencontrait le
même problème que moi et il n'ya pas toujours de
solutions!!!

Les gars de Microsoft, serait-il possible de nous






sortir
un patch assez rapidement concernant ce problème de




lock!
quand la base est petite ce n'est pas perceptible mais
dès qu'elle dépasse les 1,5Go ça devient un enfer!!

* Pour locker les lignes lors d'un select?
* Pourquoi ne pas se contenter d'ignorer les lignes






dont
les transactions ne sont pas encore COMMITTED et






ramener
tout le reste en ignorant les locks au niveau Row/Page
(Update ou Split de page)?
* Si toutes fois vous, les gars de microsoft, vouliez
observer ce problème sur une base en prod qui augmente
sensiblement tout les mois, je serai ravi de vous
acceuillir sur Paris.
Je suis joingnable au pour plus
d'infos!!

Mais je crois que de faire deplacer les GI JOE serait






du
Miracle!!!

Mais j'aimerais bien savoir comment il ont réussi à




faire
fonctionner une base de 1 To alors que dès qu'on






dépasse
les 1.5 Ghz les performances chutes!!
(Ne me dite pas les indexes car j'en ai très peu moins




de
10 par tables En fait j'ai deux table qui contiennent






12
index et le reste c'est entre 1 et 5 Index par




table!!!!)

Vous êtes sûre qu'à la place d'un T c'est pas un G!!!

Bref! Merci au challenger de chez MS ou d'ailleurs qui
pourraient se pencher sur la question!!!!

Alors MS?

Désolé d'avoir trop casser du sucre sur le dos des Dev




de
SS2K.
Mais s'apercevoir que SS2K ne gère pas très bien les
locks et les VLDB au bout d'un an de dev! C'est


frustrant!
Mon appli et ma base ont 8 mois de vie et j'en suis






déjà
à 21 GO (J'entends déjà des personnes me parlait
d'historisation! Non! Je ne peux même pas le faire! Je




ne
peux historiser que les données de plus de 5 ans!!!)

Un grand merci à tout les gens qui pourrait avoir une
idée lumineuse que je n'ai pas testé!!!


AB
Béta Testeur SS2K











.





.





.



Avatar
Eric Lapouge
Bonjour,

EM ou pas tu ne peux avoir qu'UN seul index cluster par table et pour une
raison simple : les données sont physiquement triées selon sa définition...

Eric