SQL Server는 쿼리를 병렬로 실행합니까?


10

SQL Server는 쿼리를 병렬로 실행합니까? 즉, 실행하는 데 10 초가 걸리는 무거운 쿼리를 실행하고 동시에 10 초가 걸리는 또 다른 무거운 쿼리를 시작하면 두 번째 쿼리가 실제로 10 초 후에 시작되거나 두 가지가 동시에 시작됩니다 ?


1
실제 답변은 없습니다. 연결 풀링 및 잠금 메커니즘에 대해 읽어보십시오

2
SQL Server 작업자 및 공동 작업 일정 예약 메커니즘 IMO를 읽는 데 더 적합합니다. 일반적으로 귀하의 질문에 대한 답변은 "예"입니다.
Martin Smith

답변:


14

"동시"를 의미합니다. 대답은 그렇습니다. 여기서 논의하기에는 너무 넓은 경고가 있습니다. 실제로 RDBMS의 요점은 동시성입니다.

"병렬"은 SQL Server에서 "단일 쿼리가 둘 이상의 프로세서 코어에 분산되어 있습니다"라는 의미를 갖습니다.


6

첫 번째 쿼리가 두 번째 쿼리에 필요한 테이블을 잠그지 않는 한 병렬로 실행됩니다.


5

쿼리는 가능한 한 병렬로 실행됩니다.

데이터베이스는 행, 블록 또는 전체 테이블에서 수행 한 작업에 따라 읽기 및 쓰기에 서로 다른 잠금을 사용합니다.

하나의 쿼리가 테이블에서 읽기만하는 경우 다른 쿼리는 같은 테이블에서 동시에 읽을 수도 있습니다. 한 쿼리가 테이블의 일부 레코드를 업데이트하는 경우 업데이트를 위해 잠긴 레코드를 읽지 않는 한 다른 쿼리는 테이블에서 계속 읽을 수 있습니다.


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.