メインコンテンツまでスキップ

分離レベルと書き込み競合

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

Delta Lake 、読み取りと書き込みの間のACID保証を提供します。

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

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

注記

Databricks では、デフォルトですべてのテーブルに Delta Lake が使用されます。

隔離に関するトピック

トピック

説明

分離レベル(WriteSerializable と Serializable)

2 つの分離レベルが並列操作にどのように影響するか、またそれらをどのように構成するかについて説明します。

行レベルの同時実行

行レベルの競合検出によって、同じデータ ファイルに対する並列操作の書き込み競合がどのように削減されるかを説明します。

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

メタデータ変更の競合

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

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

以下はメタデータを変更するクエリの例です。

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

次のステップ