ホームページ >データベース >mysql チュートリアル >SQL Server EXEC ステートメントは並列実行できますか?
SQL Server での非同期プロシージャの実行
SQL Server 2008 R2 のコンテキストでは、一般的なクエリには 2 つのステートメントが連続して実行されます。
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)'
ただし、2 番目のステートメントは次の時点まで実行されません。最初のものは完了します。この順次実行は、特に最初のステートメントに大幅な遅延がある場合に問題が発生する可能性があります。
EXEC ステートメントは並列で実行できますか?
次のような疑問が生じます。それは可能ですか?パフォーマンスを最適化するためにこれらのステートメントを並列実行するには? SQL Server では非同期プロシージャの実行が可能ですが、この場合、このアプローチは最適な解決策ではない可能性があります。
非同期プロシージャの実行
非同期プロシージャの実行により、ストアド プロシージャを次のことが可能になります。別の SQL Server セッションで実行されます。この分離により、最初のステートメントは 2 番目のステートメントをブロックすることなく実行を継続できます。ただし、非同期プロシージャの実行は主に、独立しており、相互に依存関係がないリクエスト用に設計されています。
データ アクセスと並列処理
を認識することが重要です。 T-SQL は主にデータ アクセス言語として動作します。トランザクション、ロック、コミット/ロールバック操作を扱う場合、真の並列処理を実現することは困難です。並列 T-SQL は通常、各リクエストが独立しており、ジョブ間の相関関係がない、リクエスト キューを伴うシナリオで使用されます。
代替アプローチ
示されている例では、目的がレコードを取得してロックし、その後ロックされている間に他のステートメントを実行することである場合、並列化は最適な解決策ではない可能性があります。代わりに、テーブル ロック メカニズムとスレッド管理手法を使用して、同時アクセスとデータ操作を管理することを検討してください。
以上がSQL Server EXEC ステートメントは並列実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。