Bonjour
- J'ai activé l'option "trunc log on chkpt" dans ma base.
- J'effectue des maj en boucle et en volume important en mode non chainé
Dans ce contexte, il m'arrive d'avoir le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ceci est fait par une procédure appélée en boucle tant que @@rowcount <> 0 set rowcount 10000 update <ma_table> ....where colonne="xxx"
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part sp_sysmon "00:05:00" recovery
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
Partager