# Read Committed Snapshot

> Comment activer l'option Read Committed Snapshot dans une base de données SQL Server
>
> Source : https://www.pachadata.com/docs/howtos/performances/rcsi/
> Auteur : Rudi Bruchez · mis à jour le 2026-10-14
> Version Markdown de la page, pour les outils et les LLM. La page HTML fait référence.


L'option Read Committed Snapshot Isolation (RCSI) permet d'éviter les blocages dans une base de données entre les lectures et les écritures : les lectures ne posent plus de verrous partagés, elles lisent des versions de lignes.

Pour activer cette option, il vaut mieux utiliser du code SQL. Il faut obtenir l'accès exclusif à la base de données pour que cette activation fonctionne : sans `ROLLBACK IMMEDIATE`, une seule session inactive connectée à la base suffit à la faire attendre. Le code suivant, en utilisant l'option `ROLLBACK IMMEDIATE`, **déconnecte tous les utilisateurs de la base**. Attention donc aux applications.

```sql
USE [master]
GO
ALTER DATABASE [PachaDataFormation] 
SET READ_COMMITTED_SNAPSHOT ON 
WITH ROLLBACK IMMEDIATE
GO
```

L'exemple porte sur la base de démonstration `PachaDataFormation` : remplacez son nom par celui de votre base.

## Impacts du RCSI

Le niveau d'isolation par défaut dans SQL Server est _Read Committed_. Cela signifie qu'un `SELECT` doit attendre qu'une transaction de modification de données soit terminée pour lire les lignes modifiées. On n'a pas le droit de lire une modification en cours. Si la modification est coûteuse, cela provoque des blocages. Une écriture peut aussi attendre une lecture, mais seulement le temps de la lecture de la ligne : en _Read Committed_, le verrou partagé est libéré dès la ligne lue.

Le mode _Read Committed Snapshot_ modifie ce comportement en créant des versions de lignes à chaque modification. Les lectures ne sont plus bloquées par les écritures : elles lisent les données validées telles qu'elles étaient au début de l'instruction, et non au début de la transaction, qui est le comportement de l'isolation `SNAPSHOT`.

Il n'y a donc plus de blocage entre les lectures et les écritures. Les lectures restent en revanche bloquées par les opérations qui modifient la structure d'une table (DDL), qui posent un verrou de modification de schéma.

Les coûts du RCSI :

- les versions de lignes sont stockées dans `tempdb`, ou dans la base elle-même si l'_Accelerated Database Recovery_ (ADR) est activée. ADR est un prérequis de l'_optimized locking_ de SQL Server 2025 ;
- chaque ligne modifiée prend jusqu'à 14 octets de plus, ce qui augmente légèrement la taille des données ;
- le code qui comptait sur le blocage pour lire la dernière valeur avant de la modifier lit désormais la dernière version validée : il doit être revu.


---

## L'auteur

Rudi Bruchez, consultant SQL Server indépendant depuis 2006 : audit de performance, optimisation, migrations, haute disponibilité et formation. Pour un audit ou une intervention sur votre serveur : https://www.pachadata.com/contact/ (audit à distance : https://www.pachadata.com/services/audit-sql-server-a-distance/).
