共用方式為


Microsoft Fabric 的倉儲資料表中的交易

適用於:✅ Microsoft Fabric 中的 SQL 分析端點和倉儲

類似於其在 SQL Server 中的行為,交易可讓您控制讀取和寫入查詢的提交或復原。

您可以使用交易將變更分組在一起,修改儲存在倉儲中資料表的資料。

  • 例如,您可以將向多個資料表提交插入,或者,如果發生錯誤,則不提交任何資料表。 如果您要變更會影響三個資料表的訂購單詳細資料,您可以將這些變更分組成單一交易。 這表示當查詢這些資料表時,它們要麼都有變更,要麼沒有任何變更。 當您需要確保資料在多個資料表之間保持一致時,交易是常見的做法。

交易功能

Microsoft Fabric 中的 SQL 分析端點支援相同的交易功能,但適用於唯讀查詢。

交易也可用於循序 SELECT 陳述式,以確保涉及的資料表均包含來自相同時間點的資料。 例如,如果資料表有另一個交易加入的新資料列,新的資料列不會影響開啟交易內的 SELECT 查詢。

重要

Microsoft Fabric 僅支援快照隔離等級。 如果您使用 T-SQL 來變更隔離等級,則會在查詢執行時間忽略變更,並套用快照隔離。

跨資料庫查詢交易支援

Microsoft Fabric 中的倉儲支援跨越相同工作區內的資料庫的交易,包括從 Lakehouse 的 SQL 分析端點讀取。 每個 Lakehouse 都有一個唯讀 SQL 分析端點。 每個工作區可以有多個 Lakehouse。

交易內的 DDL 支援

Microsoft Fabric 中的倉儲支援 DDL,例如使用者定義交易內的 CREATE TABLE。

鎖定不同類型的陳述式

下表提供可用於不同類型的交易的鎖定清單,所有鎖定都位於資料表層級:

陳述式類型 Lock taken
SELECT 結構描述穩定性 (Sch-S)
INSERT 意圖獨佔 (IX)
DELETE 意圖獨佔 (IX)
UPDATE 意圖獨佔 (IX)
COPY INTO 意圖獨佔 (IX)
DDL 結構描述修改 (Sch-M)

這些鎖定可防止在交易中更新資料列時,變更資料表的結構描述等衝突。

您可以使用動態管理檢視 (DMV) sys.dm_tran_locks 查詢目前保留的鎖定。

在交易結束時評估更新資料表中一或多個資料列的兩個或多個並行交易衝突。 第一個提交的交易順利完成,而其他交易則會復原並傳回錯誤。 這些衝突會在資料表層級進行評估,而不是個別的 Parquet 檔案層級。

INSERT 陳述式始終會建立新的 Parquet 檔案,這表示除了 DDL 外,其他交易的衝突較少,因為資料表的結構描述可能會變更。

交易記錄

Microsoft Fabric 中倉儲中的交易記錄位於 Parquet 檔案層級,因為 Parquet 檔案是不可變的 (無法變更)。 復原會導致指回先前的 Parquet 檔案。 這項變更的優點是交易記錄和復原的速度更快。

限制

  • 不支援分散式工作階段。
  • 不支援儲存點。
  • 不支援具名交易。
  • 不支援標記交易。
  • 明確交易中不支援 ALTER TABLE。
  • 目前,倉儲中的 T-SQL 功能有限。 如需目前不適用的 T-SQL 命令清單,請參閱 TSQL 介面區
  • 如果交易將資料插入空白資料表,並在復原之前發出 SELECT,則自動產生的統計資料仍可反映未提交的資料,進而導致統計資料不正確。 不正確的統計資料可能會導致查詢計劃和執行時間未最佳化。 如果您在大量 INSERT 之後復原與 SELECT 的交易,請更新 SELECT 中提及的資料行的統計資料。