Aller au contenu principal

Niveaux d'isolation et conflits d'écriture

Les niveaux d'isolement et le comportement en cas de conflit d'écriture déterminent ce qui se passe lorsque des opérations simultanées lisent et écrivent la même table Delta Lake sur Databricks.

Lorsque plusieurs jobs ou utilisateurs écrivent dans la même table en même temps, certaines de ces écritures peuvent échouer avec une exception de conflit. Utilisez les pages de cette section lorsque vous devez :

Delta Lake garantit les transactions ACID entre les lectures et les écritures :

  • Rédacteurs : plusieurs rédacteurs sur plusieurs clusters peuvent modifier simultanément une partition de table. Les rédacteurs voient une vue instantanée cohérente de la table et les écritures se produisent dans un ordre séquentiel.
  • Lecteurs : les lecteurs continuent de voir une vue instantanée cohérente de la table avec laquelle le job Databricks a démarré, même lorsqu'une table est modifiée pendant un job.

Voir Quelles sont les garanties ACID sur Databricks ?

remarque

Databricks utilise Delta Lake pour toutes les tables par default.

Sujets d'isolation​

Sujet

Description

Niveaux d'isolation (WriteSerializable et Serializable)

Comment les deux niveaux d'isolation affectent les opérations concurrentes et comment les configurer.

Simultanéité au niveau des lignes

Comment la détection des conflits au niveau des lignes réduit les conflits d’écriture pour les opérations concurrentes sur les mêmes fichiers de données.

Sujet

Description

Niveaux d'isolation (WriteSerializable et Serializable)

Comment les deux niveaux d'isolation affectent les opérations concurrentes et comment les configurer.

Simultanéité au niveau des lignes

Comment la détection des conflits au niveau des lignes réduit les conflits d’écriture pour les opérations concurrentes sur les mêmes fichiers de données.

Pour des informations sur l'isolation des transactions, le comportement des instantanés et la gestion des conflits, consultez Isolation des transactions.

Conflits de modification des métadonnées​

Les modifications de métadonnées peuvent entraîner l'échec de toutes les opérations d'écriture simultanées. Ces opérations incluent des modifications du protocole de table, des propriétés de table ou du schéma de données.

Les lectures en streaming échouent lorsqu'elles rencontrent un commit qui modifie les métadonnées de la table. Si vous souhaitez que le Stream continue, vous devez le redémarrer. Pour les méthodes recommandées, consultez Considérations de production pour Structured Streaming.

Exemples de query qui modifient des métadonnées :

SQL
-- Set a table property
ALTER TABLE table_name SET TBLPROPERTIES ('delta.isolationLevel' = 'Serializable')

-- Enable a feature using a table property and update the table protocol
ALTER TABLE table_name SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

-- Drop a table feature
ALTER TABLE table_name DROP FEATURE deletionVectors;

-- Upgrade to UniForm
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));

-- Update the table schema
ALTER TABLE table_name ADD COLUMNS (col_name STRING);

Étapes suivantes​