SQL Server 中的平行 EXEC 語句:可行嗎?
在 SQL Server 2008 R2 中,並行執行多個 EXEC 語句可以是令人困惑的挑戰。考慮以下範例:
EXECUTE sp_executesql N'PRINT ''1st '' + convert(varchar, getdate(), 126) WAITFOR DELAY ''000:00:10''' EXECUTE sp_executesql N'PRINT ''2nd '' + convert(varchar, getdate(), 126)'
雖然第一個語句延遲執行 10 秒,但第二個語句的預期立即執行將暫停,直到第一個語句完成。此排序是 T-SQL 行為的基本面向。
基本目標是檢索記錄、暫時鎖定它,並同時執行涉及該記錄及其表的其他操作。非同步執行語句可能會解決這個挑戰。
BEGIN TRY EXEC sp_OASetProperty N'Is Network Packet Size Limited', 1 EXEC sp_OAGetProperty N'Is Network Packet Size Limited' END TRY
但是,值得注意的是,T-SQL 主要用於資料操作,其事務性質與鎖定和提交/回滾機制相結合,使得真正的並行幾乎是不可能的。並行更適合請求佇列中的獨立操作,例如 ETL 流程。
因此,雖然非同步執行可能提供部分解決方案,但評估您的特定場景是否真正適合併行化至關重要。在探索此類方法時,資料完整性和事務語義應該是首要考慮因素。
以上是SQL Server EXEC語句真的可以並行運作嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!