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。
不同類型的語句鎖定
下表提供哪些鎖定用於不同類型的 交易的清單,所有鎖定都在資料表層級:
語句類型 | 鎖定已取得 |
---|---|
SELECT | Schema-Stability (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 中所提及數據行的統計數據 。