|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonjour
Code :
Msg 1105 ... Can't allocate space ...'logsegment' is full ... Pouvez-vous m'aider à le comprendre: D'après la doc officielle de Sybase: avec l'option "trunc log on chkpt", le log devait être vidé à chaque checkpoint déclenché par le serveur au bout de 50 transactions inscrites dans le log. Pour quelle raison, les checkpoints ne sont pas déclenchés ? Une autre fois: je lance en boucle (70 fois environ) les suppressions (aussi par 10000 lignes) en mode non chaîné => commités immédiatement => chaque transaction inscrite dans le log. Cette fois, je n'ai pas d'erreur. Mais pourquoi alors, un checkpoint manuel à la fin (par précaution) prends 6 minutes ? Au moment des maj intesives, j'ai lancé: et cela a donné seulement 5 checkpoints "normaux". Cela me paraît un peu juste, non ? Auriez-vous des explications ? Comment augmenter la fréquence de mes checkpoints ? Ceci étant, je ne voudrais pas changer de paramétrage du serveur, car d'autres bases (de prod) y sont hebergées. Merci d'avance mso |
||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : mars 2006 Messages : 293 ![]() |
Pour avoir moins de problème match avec l'option "select into/bulkcopy/pllsort," et/ou positionne des "pat commit" toutes la 10 000 lignes. (je dis 10 000 mais je te fais cela au nez cela peut être moins et celon la dificulté pour scripter cela ...
|
|
|
00
|
|
|
#3 |
![]() ![]() |
L'erreur 1105 peut intervenir même si on a "trunc. log on checkpoint" si la taille du transaction log est trop petit par rapport à la taille des transactions effectuées.
Dans ton cas tu un update sur 10000 ligne par transaction. Si cet update est fait dans une boucle "sérrée" il est possible que le data server n'ait pas le temps de faire un truncate entre chaque transaction committée (cela dépend de la vitesse du système IO, de la vitesse du CPU, de la charge de la machine, etc). Pour y voir un peu plus clair il faudrait savoir quelle est la taille de la transaction log sur cette base, et quelle est la taille d'une ligne que tu modifie ? Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonsoir
La taille maxi de mon journal de transactions est 1 Go. Pour la taille de la ligne, je regarde demain (sp_help <nom_table> suffit ?) Mon update consiste à
J'ai lancé le même trt (boucle) après un checkpoint explicite (6 minutes) et cela s'est bien passé. Cependant j'ai restauré aussi la base (load) alors que l'autre fois le trt. a été lancé après plusieurs interruptions brutales suite aux erreurs. Aurait-il accumulé les écritures + transactions non terminées proprement ... ? Arona, je ne te comprends pas: l'option avec le bulk est bien positionnée sur ma base. Mais le "pat commit" ( voulais-tu dire "pas") ? J'utilise le mode non chaîné, donc chaque delete engendre un commit implicite, je crois .... Je n'utilise pas d'instruction commit dans mon code. Mon traitement consiste à:
Merci mso P.S. Que-est-ce qui est écrit exactement dans le journal log pour un ordre de type "delete from ..." avec la suppression de 1000 lignes en une seule transaction. Cela donne une ou 1000 écritures dans le journal ? Je crois qu'une seule, non ? |
|
|
00
|
|
|
#5 | ||
![]() ![]() |
La taille d'une ligne peut être déduite via sp_help, ou alors via sp_estspace:
Code :
Un update va se faire "in place" en général, mais dans certaines circonstances un "deferred update" est nécessaire. Dans ton cas ce n'est à priori pas le cas, puisque la ligne ne va pas grandir (modification de colonnes de tailles fixes, et mise à NULL d'un varchar). Comme rowcount est mis à 10000, chaque update s'applique à 10000 lignes (au maximum), et donc chaque transaction touche 10000 lignes. Ce qui fait 10000 entrées dans le journal (d'un seul tennant, mais c'est 10000 entrées quand même). Normallement je suis d'accord, un journal de 1GB devrait suffire. Est-ce qu'il y a d'autres process qui tournent en même temps que ton delete ? Michael
__________________
Michael Peppler Membre de TeamSybase - www.teamsybase.com "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson |
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 248 ![]() |
Bonjour
sp_estspace affiche 2.4 Mo. J'ai l'impression que le contexte du test (arrêts/relances) a favorisé la survenue de cette erreur. Je pense que nous allons attendre l'eventuelle réapparition du problème pour aller plus loin dans nos investigations. Pour ta question Michael: Oui sur le même serveur il y plsrs bases en production. Merci mso |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com