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 秒遅延させますが、予期された 2 番目のステートメントの即時実行は、最初のステートメントが完了するまで停止されます。この順序付けは、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 中国語 Web サイトの他の関連記事を参照してください。