次の方法で共有


アイソレーションレベルと書き込みの競合

このページでは、Azure Databricks 上の Delta Lake テーブルの分離レベルと書き込みの競合動作について説明します。

Delta Lake では、読み取りと書き込みの間で ACID トランザクションが保証されます。

  • ライター: 複数のクラスターにまたがる複数のライターは、テーブル パーティションを同時に変更できます。 ライターは、テーブルの一貫したスナップショット ビューを表示し、書き込みをシリアル順序で行います。
  • 閲覧者: リーダーは、ジョブ中にテーブルが変更された場合でも、Azure Databricks ジョブが開始したテーブルの一貫したスナップショット ビューを引き続き表示します。

Azure Databricks での ACID 保証とは」を参照してください。

Azure Databricks では、既定ですべてのテーブルに Delta Lake が使用されます。

分離に関するトピック

トピック 説明
分離レベル (WriteSerializable および Serializable) 2 つの分離レベルが同時実行操作に与える影響とその構成方法。
行レベルのコンカレンシー 行レベルの競合検出によって、同じデータ ファイルに対する同時操作の書き込み競合が軽減されるしくみ。

トランザクションの分離、スナップショットの動作、および競合の処理については、「 トランザクションの分離」を参照してください。

メタデータの変更の競合

メタデータの変更により、すべての同時書き込み操作が失敗します。 これらの操作には、テーブル プロトコル、テーブル プロパティ、またはデータ スキーマの変更が含まれます。

ストリーミング読み取りは、テーブルメタデータを変更するコミットに遭遇すると失敗します。 ストリームを続行する場合は、ストリームを再起動する必要があります。 推奨される方法については、「 構造化ストリーミングの運用に関する考慮事項」を参照してください。

メタデータを変更するクエリの例を次に示します。

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

次のステップ