¿SQL Server ejecuta consultas en paralelo?

10

¿SQL Server ejecuta consultas en paralelo? En otras palabras, si ejecuto una consulta pesada que demora 10 segundos en ejecutarse, y al mismo tiempo inicio otra consulta pesada que demora 10 segundos, ¿la segunda consulta realmente comenzará después de 10 segundos o comenzarán ambas al mismo tiempo? ?

usuario369117
fuente
1
no hay una respuesta real posible, lea sobre la agrupación de conexiones y el mecanismo de bloqueo
2
Más relevante para leer sobre los trabajadores de SQL Server y el mecanismo de programación cooperativa IMO. En general, la respuesta a su pregunta es "sí".
Martin Smith

Respuestas:

14

Te refieres a "concurrentemente". La respuesta es sí, con advertencias que son demasiado amplias para discutir aquí. De hecho, todo el punto de RDBMS es la concurrencia.

"Paralelo" tiene un significado preciso en SQL Server: "una sola consulta se distribuye en más de un núcleo de procesador".

gbn
fuente
6

Mientras su primera consulta no bloquee una tabla necesaria en su segunda consulta, se ejecutarán en paralelo.

Ash Burlaczenko
fuente
5

Las consultas se ejecutan en paralelo, en la medida de lo posible.

La base de datos usa diferentes bloqueos para lectura y escritura, en filas, bloques o tablas enteras, dependiendo de lo que haga.

Si una consulta solo lee de una tabla, otra consulta también puede leer de la misma tabla al mismo tiempo. Si una consulta actualiza algunos registros en una tabla, es posible que otra consulta aún pueda leer de la tabla siempre que no lea ningún registro que se haya bloqueado para la actualización.

Guffa
fuente
2

Depende de los datos: generalmente se ejecutan en paralelo, pero algunos escenarios de bloqueo pueden hacer que una consulta espere a otra. Por supuesto, si el subsistema de disco es débil y no tiene suficiente RAM, las consultas múltiples pueden ejecutarse más lentamente.

Arvo
fuente
0

DDL (lenguaje de definición de datos) funciona en paralelo como la instrucción SELECT
DML (lenguaje modificado de datos) no funciona en paralelo como la instrucción INSERT y UPDATE


fuente
SELECT no es una declaración DDL
a_horse_with_no_name
-1

Si está escribiendo las consultas como a continuación ... se ejecutará paralelamente

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

Nota : su consulta paralela vendrá en estado de espera en caso de que haya una inserción masiva en una tabla

Pankaj
fuente