SQL Serverはクエリを並列で実行しますか?


10

SQL Serverはクエリを並列で実行しますか?言い換えると、実行に10秒かかる重いクエリを実行し、同時に10秒かかる別の重いクエリを開始した場合、2番目のクエリは実際に10秒後に開始するか、両方を同時に開始しますか?


1
実際の答えはありません。接続プールとロックのメカニズムについて読んでください

2
SQL Serverワーカーと協調型スケジューリングメカニズムIMOの説明に関連します。一般的に、あなたの質問に対する答えは「はい」です。
マーティン・スミス

回答:


14

「同時に」という意味です。答えは「はい」です。ただし、ここで説明するには広範すぎる警告があります。実際、RDBMSの重要なポイントは同時実行性です。

SQL Serverでは、 "並列"は正確な意味を持っています: "単一のクエリは複数のプロセッサコアに分散されます"。



5

クエリは可能な限り並列で実行されます。

データベースは、行、ブロック、またはテーブル全体に対して、実行する操作に応じて、読み取りと書き込みに異なるロックを使用します。

1つのクエリがテーブルからのみ読み取る場合、別のクエリも同じテーブルから同時に読み取ることができます。あるクエリがテーブル内のいくつかのレコードを更新した場合、別のクエリは、更新のためにロックされたレコードを読み取らない限り、テーブルから読み取ることができる場合があります。


2

データに依存します-通常、それらは並行して実行されますが、一部のロックシナリオでは、あるクエリが別のクエリを待機する可能性があります。もちろん、ディスクサブシステムが脆弱でRAMが十分にない場合、複数のクエリの実行速度が遅くなる可能性があります。


0

DDL(データ定義言語)はSELECTステートメントのように並行して動作し
ますDML(データ変更言語)はINSERTおよびUPDATEステートメントのように並行して動作しません


SELECTはDDLステートメントではありません
a_horse_with_no_name

-1

以下のようなクエリを記述している場合...並列に実行されます

SET XACT_ABORT ON
Begin Try
     Begin Tran
        --Your Sql Statement
     Commit Tran
End Try
Begin Catch
    Rollback Tran
End Catch

-並列クエリは、テーブルに一括挿入する場合に備えて待機状態になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.