O SQL Server executa consultas em paralelo?


10

O SQL Server executa consultas em paralelo? Em outras palavras, se eu executar uma consulta pesada que leva 10 segundos para executar e, ao mesmo tempo, iniciar outra consulta pesada que leva 10 segundos, a segunda consulta realmente será iniciada após 10 segundos ou iniciará as duas ao mesmo tempo ?


11
nenhuma resposta real possível, leia-se sobre o pool de conexão e mechanisme bloqueio

2
Mais relevante para ler sobre os trabalhadores do SQL Server e o mecanismo de agendamento cooperativo IMO. Em geral, a resposta para sua pergunta é "sim".
Martin Smith

Respostas:


14

Você quer dizer "simultaneamente". A resposta é sim, com advertências que são amplas demais para serem discutidas aqui. De fato, o objetivo principal do RDBMS é a simultaneidade.

"Paralelo" tem um significado preciso no SQL Server: "uma única consulta é distribuída por mais de um núcleo de processador".


6

Contanto que sua primeira consulta não bloqueie uma tabela necessária em sua segunda consulta, elas serão executadas em paralelo.


5

As consultas são executadas em paralelo, na medida do possível.

O banco de dados usa bloqueios diferentes para leitura e gravação, em linhas, blocos ou tabelas inteiras, dependendo do que você faz.

Se uma consulta lê apenas de uma tabela, outra consulta também pode ler da mesma tabela ao mesmo tempo. Se uma consulta atualizar alguns registros em uma tabela, outra consulta ainda poderá ler a tabela, desde que não leia nenhum registro bloqueado para a atualização.


2

Depende dos dados - geralmente eles são executados em paralelo, mas alguns cenários de bloqueio podem fazer uma consulta esperar por outra. Obviamente, se o subsistema de disco estiver fraco e você não tiver RAM suficiente, várias consultas poderão ser mais lentas.


0

DDL (linguagem de definição de dados) funciona paralelamente como a instrução SELECT
DML (linguagem modificada de dados) não funciona paralelamente como a instrução INSERT e UPDATE


SELECT não é uma instrução DDL
a_horse_with_no_name 14/07/19

-1

Se você estiver escrevendo as consultas como abaixo ... será executado paralelamente

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

Nota - Sua consulta paralela entrará no estado de espera, caso haja inserção em massa em uma tabela

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.