Partager via


Niveaux d’isolation et conflits d’écriture

Cette page décrit les niveaux d’isolation et le comportement de conflit d’écriture pour les tables Delta Lake sur Azure Databricks.

Delta Lake assure des garanties de transaction ACID pour les opérations de lecture et d'écriture.

  • Enregistreurs : plusieurs enregistreurs sur plusieurs clusters peuvent modifier simultanément une partition de table. Les auteurs voient une vue instantanée cohérente de la table et les opérations d’écriture sont effectuées dans un ordre séquentiel.
  • Lecteurs : Les lecteurs continuent de voir une vue d’instantané cohérente de la table avec laquelle le travail Azure Databricks a démarré, même lorsqu’une table est modifiée pendant un travail.

Consultez En quoi consistent les garanties ACID sur Azure Databricks ?.

Note

Azure Databricks utilise Delta Lake pour toutes les tables par défaut.

Sujets d’isolation

Sujet Description
Niveaux d’isolation (WriteSerializable et Serializable) Comment les deux niveaux d’isolation affectent les opérations simultanées et comment les configurer.
Concurrence au niveau des lignes La façon dont la détection des conflits au niveau des lignes réduit les conflits d’écriture pour les opérations simultanées sur les mêmes fichiers de données.

Pour plus d’informations sur l’isolation des transactions, le comportement d’instantané et la gestion des conflits, consultez l’isolation des transactions.

Conflits de modification des métadonnées

Les modifications des métadonnées entraînent l’échec de toutes les opérations d’écriture simultanées. Ces opérations comprennent la modification du protocole de la table, des propriétés de la table ou du schéma de données.

Les lectures en flux échouent lorsqu’elles rencontrent un commit qui modifie les métadonnées d’une table. Si vous souhaitez que le flux continue, vous devez le redémarrer. Pour connaître les méthodes recommandées, consultez Considérations relatives à la production pour Structured Streaming.

Voici des exemples de requêtes qui modifient les métadonnées :

-- 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