Aller au contenu principal

Niveaux d'isolation et conflits d'écriture

Cette page décrit les niveaux d'isolation et le comportement des conflits d'écriture pour les tables Delta Lake sur Databricks.

Delta Lake fournit des garanties de 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 entraînent l'échec de toutes les opérations d'écriture concurrentes. Ces opérations incluent les 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.

Voici des exemples de queries qui modifient les 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