Tous les produits
Search
Centre de documentation

MaxCompute:ACID transaction management

Dernière mise à jour :Aug 10, 2026

Lorsque plusieurs jobs écrivent simultanément dans la même table Delta, vous devez comprendre quelles combinaisons d'opérations entrent en conflit, comment MaxCompute les résout et comment concevoir vos pipelines pour les éviter. MaxCompute s'appuie sur MetaService pour gérer toutes les opérations de modification des données sur les tables Delta sous forme de transactions. Le contrôle de concurrence multiversion (MVCC) isole les lectures et écritures concurrentes sur les snapshots, tandis que le contrôle de concurrence optimiste (OCC) gère la concurrence des transactions.

Règles de détection des conflits

Le tableau suivant présente la manière dont MaxCompute résout les conflits entre des jobs concurrents portant sur la même table non partitionnée ou la même partition. Le job qui se termine en premier est considéré comme le job antérieur ; celui qui se termine plus tard est le job postérieur.

Job antérieur

Job postérieur

Résultat

INSERT OVERWRITE / TRUNCATE

INSERT OVERWRITE / TRUNCATE

Les deux réussissent. Le résultat du job postérieur écrase celui du job antérieur.

INSERT OVERWRITE / TRUNCATE

INSERT INTO

Le job antérieur réussit. Le job postérieur échoue.

INSERT OVERWRITE / TRUNCATE

UPDATE / DELETE

Le job antérieur réussit. Le job postérieur échoue.

INSERT OVERWRITE / TRUNCATE

MINOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

INSERT OVERWRITE / TRUNCATE

MAJOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

INSERT INTO

INSERT OVERWRITE / TRUNCATE

Les deux réussissent. Le résultat du job postérieur écrase celui du job antérieur.

INSERT INTO

INSERT INTO

Le job antérieur réussit. Le job postérieur échoue.

INSERT INTO

UPDATE / DELETE

Le job antérieur réussit. Le job postérieur échoue.

INSERT INTO

MINOR COMPACT

Les deux réussissent. La compaction du job postérieur aboutit.

INSERT INTO

MAJOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

UPDATE / DELETE

INSERT OVERWRITE / TRUNCATE

Les deux réussissent. Le résultat du job postérieur écrase celui du job antérieur.

UPDATE / DELETE

INSERT INTO

Le job antérieur réussit. Le job postérieur échoue.

UPDATE / DELETE

UPDATE / DELETE

Le job antérieur réussit. Le job postérieur échoue.

UPDATE / DELETE

MINOR COMPACT

Les deux réussissent. La compaction du job postérieur aboutit.

UPDATE / DELETE

MAJOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

MINOR COMPACT

INSERT OVERWRITE / TRUNCATE

Les deux réussissent. Le résultat du job postérieur écrase celui du job antérieur.

MINOR COMPACT

INSERT INTO

Les deux réussissent. Les nouvelles données du job postérieur sont écrites.

MINOR COMPACT

UPDATE / DELETE

Les deux réussissent. Les nouvelles données du job postérieur sont écrites.

MINOR COMPACT

MINOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

MINOR COMPACT

MAJOR COMPACT

Les deux réussissent. La compaction du job postérieur aboutit.

MAJOR COMPACT

INSERT OVERWRITE / TRUNCATE

Les deux réussissent. Le résultat du job postérieur écrase celui du job antérieur.

MAJOR COMPACT

INSERT INTO

Les deux réussissent. Les nouvelles données du job postérieur sont écrites.

MAJOR COMPACT

UPDATE / DELETE

Les deux réussissent. Les nouvelles données du job postérieur sont écrites.

MAJOR COMPACT

MINOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

MAJOR COMPACT

MAJOR COMPACT

Le job antérieur réussit. Le job postérieur échoue.

Remarque

Ces règles s'appliquent au niveau de la transaction, et non au niveau de la ligne ou du fichier.

Optimisation des conflits de concurrence

MaxCompute optimise la gestion des conflits pour les combinaisons d'opérations courantes, réduisant ainsi les échecs inutiles tout en préservant l'exactitude des données.

Remarque

L'optimisation des conflits de concurrence s'applique uniquement à la gestion des transactions sur une seule table.

Résolution intelligente des conflits

Toutes les transactions qui se chevauchent n'entrent pas nécessairement en conflit. Par exemple, lorsqu'une opération de clustering et une opération INSERT INTO se chevauchent en termes de démarrage et de validation, les deux aboutissent. Le clustering réorganise la disposition physique des données sans modifier leur état ; il ne peut donc pas provoquer d'incohérence d'état avec une écriture concurrente. MaxCompute détecte cette situation et autorise la poursuite des deux opérations. La logique de gestion des conflits de transactions continuera d'être optimisée pour s'adapter à davantage de scénarios.

Nouvelle tentative au niveau des métadonnées

En cas d'échec de la détection des conflits, MaxCompute effectue une nouvelle tentative au niveau des métadonnées. Aucune donnée n'a besoin d'être relue ou réécrite. Cette approche réduit la consommation de ressources par rapport à la réexécution complète du job.

Mises à jour atomiques des métadonnées

Les métadonnées sont mises à jour de manière atomique afin de garantir la cohérence des données.

Gestion des versions des fichiers de données

Chaque transaction génère un lot de nouveaux fichiers de données associés à deux types de versions :

Type de version

Type de données

Généré lorsque

Utilisé pour

Version temporelle

TIMESTAMP

Opérations déclenchées par l'utilisateur qui modifient uniquement les données sur le plan logique. Le clustering et la compaction ne génèrent pas de nouvelle version temporelle.

Requêtes incrémentielles basées sur le temps. Les fichiers issus du clustering et de la compaction sont exclus.

Version ID

Entier à incrémentation automatique

Chaque opération sur les données au sein d'une transaction, y compris le clustering et la compaction.

Gestion interne des transactions (principale). Également disponible pour les requêtes incrémentielles.