OVH Cloud OVH Cloud

questions de transactions

3 réponses
Avatar
Laurent Léturgez
Salut à tous,

Deux petites questions en rapport avec la gestion des transactions sous
SQL Server :
- Comment fait-on pour forcer la descente sur disque des transactions
(Est ce qu'un simple commit suffit ou alors la descente sur disque est
asynchrone ? Y a t-il une commande pour faire cela?)
- Je voudrai savoir quelle est la commande ou la manière de faire pour
switcher sur un nouveau journal de transactions ? Si tout cela est
possible...

Merci de vos eclaircissements !!

Laurent

3 réponses

Avatar
bruno reiter [MVP]
L'écriture des transactions est synchrone, pour forcer l'écriture des
données CHECKPOINT
On ne force pas le switch sur un nouveau fichier log, il le fait
automatiquement s'il n'y aplus de place, on peut qd même utiliser DBCC
SHRINKFILE ... EMPTYFILE ... pour déplacer sur un autre fichier

br

"Laurent Léturgez" wrote in message
news:43396a78$0$26870$
Salut à tous,

Deux petites questions en rapport avec la gestion des transactions sous
SQL Server :
- Comment fait-on pour forcer la descente sur disque des transactions
(Est ce qu'un simple commit suffit ou alors la descente sur disque est
asynchrone ? Y a t-il une commande pour faire cela?)
- Je voudrai savoir quelle est la commande ou la manière de faire pour
switcher sur un nouveau journal de transactions ? Si tout cela est
possible...

Merci de vos eclaircissements !!

Laurent


Avatar
Bouarroudj Mohamed
Pour la 1ere question je ne suis pas sur de bien comprendre l'intérêt de
forcer la descente dans le disque et on a pas besoin de savoir les
mécaniques internes de SQL Server pour bien utiliser les transactions .

Pour tous changemenst dans les données, SQL Server utilise deux types
d'écritures :
- La 1ere c'est l'écriture instantané dans le log des transactions (dans le
disque physique sans passé par le buffer)
- La 2eme est l'ecriture dans les pages (storage page) et il y'a un ou
plusieurs threads qui se déclenchent a des intervalles définies pour écrire
physiquement dans le disque, cherche sur le net ou le BOL avec les mots
clés : Lazy Writer architecture

Donc SQL Server gere pour nous la descente des données sur le disque et je
pense pas qu'on puisque changer cette architecture ou cette configuration


"Laurent Léturgez" wrote in message
news:43396a78$0$26870$
Salut à tous,

Deux petites questions en rapport avec la gestion des transactions sous
SQL Server :
- Comment fait-on pour forcer la descente sur disque des transactions (Est
ce qu'un simple commit suffit ou alors la descente sur disque est
asynchrone ? Y a t-il une commande pour faire cela?)
- Je voudrai savoir quelle est la commande ou la manière de faire pour
switcher sur un nouveau journal de transactions ? Si tout cela est
possible...

Merci de vos eclaircissements !!

Laurent


Avatar
Fred BROUARD
Cela n'a efectivement aucun intérêt, sauf cas très particuliers...

Lorsque des données doivent être écrites :
1) la transaction est écrite dans son intégralité dans le journal :
qui, a quel moment, quelles valeurs avant, quelles valeurs après...
2) le journal est physiquement écrit sur le disque
3) les données modifiées sont montée dans les pages mémoire
4) les pages modifiées sont marqués
5) le lazy writer vérifie régulièrement les pages marqués et les copies sur le
disque (une minute en principe sauf modif du paramétrage de base)
6) si le lazy writer n'a pas le temps, il le fera "on idle"
7) on peut forcer l'écriture du lazy writer avec des checkpoint.

MAIS : cela bloquera toutes les autres transactions en cours susceptible de
porter sur ces pages. Donc à éviter si l'on veut des performances.

Le seul intérêt de forcer un CHECKPOINT est de permettre de raccourcir le temps
de remonté des journaux de transaction dans le cadre d'une restauration suite à
un plantage...

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************

Laurent Léturgez a écrit:
Salut à tous,

Deux petites questions en rapport avec la gestion des transactions sous
SQL Server :
- Comment fait-on pour forcer la descente sur disque des transactions
(Est ce qu'un simple commit suffit ou alors la descente sur disque est
asynchrone ? Y a t-il une commande pour faire cela?)
- Je voudrai savoir quelle est la commande ou la manière de faire pour
switcher sur un nouveau journal de transactions ? Si tout cela est
possible...

Merci de vos eclaircissements !!

Laurent