OVH Cloud OVH Cloud

BdD "TempDb" grossit anormalement

8 réponses
Avatar
Doche
Bonjour,

Je rencontre des probl=E8mes avec la base de=20
donn=E9es "TempDb" qui grossit anormalement.

En temps normal, il est pr=E9f=E9rable de la fixer =E0 100Mo, et=20
de ne pas la laisser s'=E9tendre automatiquement.

Lors d'=E9x=E9cution de certaines requ=EAte, je suis oblig=E9e de=20
la laisser en "extension automatique" sinon une erreur=20
survient : "impossible d'allouer de nouvelles pages..." au=20
quel cas, la requete ne peut s'ex=E9cuter.

Cela est tr=E8s probl=E9matique puisque la tempdb a d=E9j=E0=20
grossi jusqu'=E0 64Go une fois !!

Auriez-vous une id=E9e pour ce pb ??

merci
a+
Doche

8 réponses

Avatar
Jerome BERTHAUD
Bonjour,

Il s'agit du fonctionnement normal de SQL Server. Lorsque une erreur
survient pendant le traitement d'une requête, nous nous attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un retour en arrière sur
les données modifiées, la table Tempdb est utilisée pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la taille de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo, et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..." au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche
Avatar
Jerome BERTHAUD
Bonjour,

Il s'agit du fonctionnement normal de SQL Server. Lorsque une erreur
survient pendant le traitement d'une requête, nous nous attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un retour en arrière sur
les données modifiées, la table Tempdb est utilisée pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la taille de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo, et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..." au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche
Avatar
bruno reiter [MVP]
Le retour en arrière est plutôt possible gâce au transaction log.

si TEMPDB grossit beaucoup c'est lié aux objets temporaires, tables et
pseudo tables par ex des hash match, des tris, des regroupements sur des
tables ou des jeus de résultat de grosse taille.

il faut sans doute utiliser le profiler pour vérifier ce qui se passe.

br

"Jerome BERTHAUD" wrote in message
news:#
Bonjour,

Il s'agit du fonctionnement normal de SQL Server. Lorsque une erreur
survient pendant le traitement d'une requête, nous nous attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un retour en arrière


sur
les données modifiées, la table Tempdb est utilisée pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la taille de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo, et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..." au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche




Avatar
bruno reiter [MVP]
Le retour en arrière est plutôt possible gâce au transaction log.

si TEMPDB grossit beaucoup c'est lié aux objets temporaires, tables et
pseudo tables par ex des hash match, des tris, des regroupements sur des
tables ou des jeus de résultat de grosse taille.

il faut sans doute utiliser le profiler pour vérifier ce qui se passe.

br

"Jerome BERTHAUD" wrote in message
news:#
Bonjour,

Il s'agit du fonctionnement normal de SQL Server. Lorsque une erreur
survient pendant le traitement d'une requête, nous nous attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un retour en arrière


sur
les données modifiées, la table Tempdb est utilisée pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la taille de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo, et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..." au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche




Avatar
Doche
Re,

merci déjà pour vos retours rapides!

Ce que je peux déjà dire, c'est qu'en général, nous avons
des GROUP BY assez importants, ce qui peut être lourd à
gérer pour SQL Server.

Nous avons déjà essayé de limiter également la tempdb à
2Go (ce qui me parait déjà énorme!), mais apparement, ça
ne lui suffit pas!
Pour info, il est vrai que les requêtes passent pas
plusieurs millions de lignes pour n'en ramener que souvent
très peu (une centaine). Le problème est que je ne vois
pas comment faire autrement pour limiter la remontée des
données dans une table temporaire!


Sinon, concernant le profiler, désolée, mais je ne sais
pas trop à quoi ça correspond ! :/



-----Message d'origine-----
Le retour en arrière est plutôt possible gâce au


transaction log.

si TEMPDB grossit beaucoup c'est lié aux objets


temporaires, tables et
pseudo tables par ex des hash match, des tris, des


regroupements sur des
tables ou des jeus de résultat de grosse taille.

il faut sans doute utiliser le profiler pour vérifier ce


qui se passe.

br

"Jerome BERTHAUD" wrote in


message
news:#
Bonjour,

Il s'agit du fonctionnement normal de SQL Server.




Lorsque une erreur
survient pendant le traitement d'une requête, nous nous




attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un




retour en arrière
sur
les données modifiées, la table Tempdb est utilisée




pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données




modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient




certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la taille




de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in




message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo,




et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée




de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..."




au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche






.



Avatar
Doche
Re,

merci déjà pour vos retours rapides!

Ce que je peux déjà dire, c'est qu'en général, nous avons
des GROUP BY assez importants, ce qui peut être lourd à
gérer pour SQL Server.

Nous avons déjà essayé de limiter également la tempdb à
2Go (ce qui me parait déjà énorme!), mais apparement, ça
ne lui suffit pas!
Pour info, il est vrai que les requêtes passent pas
plusieurs millions de lignes pour n'en ramener que souvent
très peu (une centaine). Le problème est que je ne vois
pas comment faire autrement pour limiter la remontée des
données dans une table temporaire!


Sinon, concernant le profiler, désolée, mais je ne sais
pas trop à quoi ça correspond ! :/



-----Message d'origine-----
Le retour en arrière est plutôt possible gâce au


transaction log.

si TEMPDB grossit beaucoup c'est lié aux objets


temporaires, tables et
pseudo tables par ex des hash match, des tris, des


regroupements sur des
tables ou des jeus de résultat de grosse taille.

il faut sans doute utiliser le profiler pour vérifier ce


qui se passe.

br

"Jerome BERTHAUD" wrote in


message
news:#
Bonjour,

Il s'agit du fonctionnement normal de SQL Server.




Lorsque une erreur
survient pendant le traitement d'une requête, nous nous




attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un




retour en arrière
sur
les données modifiées, la table Tempdb est utilisée




pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données




modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient




certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la taille




de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in




message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo,




et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée




de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..."




au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche






.



Avatar
Fred BROUARD
Doche a écrit:
Re,

merci déjà pour vos retours rapides!

Ce que je peux déjà dire, c'est qu'en général, nous avons
des GROUP BY assez importants, ce qui peut être lourd à
gérer pour SQL Server.

Nous avons déjà essayé de limiter également la tempdb à
2Go (ce qui me parait déjà énorme!), mais apparement, ça
ne lui suffit pas!
Pour info, il est vrai que les requêtes passent pas
plusieurs millions de lignes pour n'en ramener que souvent
très peu (une centaine). Le problème est que je ne vois
pas comment faire autrement pour limiter la remontée des
données dans une table temporaire!



Un data warehouse ou mieux, un data mart !

C'est justement fait pour éviter les GROUP BY sur des milions de lignes.
Cela permet aussi de faire chuter dramatiquement les temps de requête !

A +



Sinon, concernant le profiler, désolée, mais je ne sais
pas trop à quoi ça correspond ! :/




-----Message d'origine-----
Le retour en arrière est plutôt possible gâce au



transaction log.

si TEMPDB grossit beaucoup c'est lié aux objets



temporaires, tables et

pseudo tables par ex des hash match, des tris, des



regroupements sur des

tables ou des jeus de résultat de grosse taille.

il faut sans doute utiliser le profiler pour vérifier ce



qui se passe.

br

"Jerome BERTHAUD" wrote in



message

news:#

Bonjour,

Il s'agit du fonctionnement normal de SQL Server.





Lorsque une erreur

survient pendant le traitement d'une requête, nous nous





attendons à ce

qu'aucune donnée n'aie été modifiée. Pour permettre un





retour en arrière

sur

les données modifiées, la table Tempdb est utilisée





pendant la durée de la

transaction.

Le Nb de lignes traitées ou le volume de données





modifiées doit être

important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient





certainement de la

capacité du disque.

Pour eviter un grossissement aussi important, la taille





de la transaction

peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in





message

news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à 100Mo,





et

de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée





de

la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles pages..."





au

quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche






.









--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
lionelp
Bonjour,

Sans regarder comment la requête peut être faite
autrement, il n'y a rien d'anormal à avoir tempdb de
quelques dizaines de GB ou plus si certaines requêtes le
nécessitent. Certains on tempdb taillée à 150GB. Autre
chose, si tu réduis puis laisse grossir tempdb, alors
l'autogrow va, à chaque déclenchement, bloquer toute
requête qui insère, modifie ou supprime des lignes dans
tempdb. l'autogrow est source de mauvaise performance, il
faut le voir une commodité au cas la taille d'un fichier
de base est sous évaluée, afin que le traitement continue.

Cordialement,
LionelP

-----Message d'origine-----
Re,

merci déjà pour vos retours rapides!

Ce que je peux déjà dire, c'est qu'en général, nous avons
des GROUP BY assez importants, ce qui peut être lourd à
gérer pour SQL Server.

Nous avons déjà essayé de limiter également la tempdb à
2Go (ce qui me parait déjà énorme!), mais apparement, ça
ne lui suffit pas!
Pour info, il est vrai que les requêtes passent pas
plusieurs millions de lignes pour n'en ramener que


souvent
très peu (une centaine). Le problème est que je ne vois
pas comment faire autrement pour limiter la remontée des
données dans une table temporaire!


Sinon, concernant le profiler, désolée, mais je ne sais
pas trop à quoi ça correspond ! :/



-----Message d'origine-----
Le retour en arrière est plutôt possible gâce au


transaction log.

si TEMPDB grossit beaucoup c'est lié aux objets


temporaires, tables et
pseudo tables par ex des hash match, des tris, des


regroupements sur des
tables ou des jeus de résultat de grosse taille.

il faut sans doute utiliser le profiler pour vérifier ce


qui se passe.

br

"Jerome BERTHAUD" wrote in


message
news:#
Bonjour,

Il s'agit du fonctionnement normal de SQL Server.




Lorsque une erreur
survient pendant le traitement d'une requête, nous






nous
attendons à ce
qu'aucune donnée n'aie été modifiée. Pour permettre un




retour en arrière
sur
les données modifiées, la table Tempdb est utilisée




pendant la durée de la
transaction.

Le Nb de lignes traitées ou le volume de données




modifiées doit être
important pour que la taille de tempdb atteigne 64Go.

L'erreur impossible d'allouer de nlles pages vient




certainement de la
capacité du disque.

Pour eviter un grossissement aussi important, la






taille
de la transaction
peut elle être diminuée ?

Jerome BERTHAUD MCSD, MCT
http://www.winsight.fr

"Doche" wrote in




message
news:1c17901c45216$88dd2910$
Bonjour,

Je rencontre des problèmes avec la base de
données "TempDb" qui grossit anormalement.

En temps normal, il est préférable de la fixer à






100Mo,
et
de ne pas la laisser s'étendre automatiquement.

Lors d'éxécution de certaines requête, je suis obligée




de
la laisser en "extension automatique" sinon une erreur
survient : "impossible d'allouer de nouvelles






pages..."
au
quel cas, la requete ne peut s'exécuter.

Cela est très problématique puisque la tempdb a déjà
grossi jusqu'à 64Go une fois !!

Auriez-vous une idée pour ce pb ??

merci
a+
Doche






.



.