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中文网其他相关文章!