共用方式為


隔離層級與寫作衝突

本頁說明 Azure Databricks 上 Delta Lake 資料表的隔離層級及寫入衝突行為。

Delta Lake 提供讀取與寫入間的 ACID 交易保證:

  • 寫入者:多個叢集的寫入者可以同時修改一個資料表分割區。 寫入器會看到數據表的一致快照集檢視,並以序列順序進行寫入。
  • 讀者:讀者仍會看到 Azure Databricks 工作起始時所用資料表的一致快照視圖,即使工作中資料表被修改。

請參閱 什麼是 Azure Databricks 上的 ACID 保證?

備註

根據預設,Azure Databricks 會針對所有數據表使用 Delta Lake。

隔離主題

主題 說明
隔離層級(可寫序列化與序列化) 這兩種隔離層如何影響並行操作,以及如何配置它們。
列層級併發 資料列層級衝突偵測如何降低同一資料檔案上同時操作的寫入衝突。

關於交易隔離、快照行為及衝突處理的資訊,請參見 交易隔離

元資料變更衝突

元數據變更會導致所有並行寫入作業失敗。 這些作業包括數據表通訊協議、數據表屬性或數據架構的變更。

串流讀取在遇到更改數據表元數據的提交時會失敗。 如果你想讓直播繼續,必須重新啟動。 如需建議的方法,請參閱 結構化串流的生產考慮

以下是變更元數據的查詢範例:

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

下一步