SQL Server выполняет запросы параллельно?

10

SQL Server выполняет запросы параллельно? Другими словами, если я выполню сложный запрос, выполнение которого занимает 10 секунд, и в то же время запускаю другой сложный запрос, который занимает 10 секунд, второй запрос действительно начнется через 10 секунд или они начнутся одновременно в одно и то же время. ?

user369117
источник
1
Реальный ответ невозможен, читайте о механизме объединения и блокировки соединений
2
Более уместно почитать о работниках SQL Server и о механизме совместного планирования IMO. В общем, ответ на ваш вопрос "да".
Мартин Смит

Ответы:

14

Вы имеете в виду «одновременно». Ответ - да, с оговорками, которые слишком широки для обсуждения здесь. Фактически, весь смысл RDBMS - это параллелизм.

«Параллель» имеет точное значение в SQL Server: «один запрос распределен по нескольким ядрам процессора».

ГБН
источник
6

Пока ваш первый запрос не блокирует таблицу, необходимую для второго запроса, они будут работать параллельно.

Эш Бурлаченко
источник
5

Запросы выполняются параллельно, насколько это возможно.

База данных использует различные блокировки для чтения и записи для строк, блоков или целых таблиц, в зависимости от того, что вы делаете.

Если один запрос читает только из таблицы, другой запрос может также считывать из той же таблицы одновременно. Если один запрос обновляет несколько записей в таблице, другой запрос все еще может читать из таблицы, если он не считывает записи, заблокированные для обновления.

Guffa
источник
2

Зависит от данных - обычно они работают параллельно, но некоторые сценарии блокировки могут привести к тому, что один запрос будет ждать другой. Конечно, если дисковая подсистема слабая и у вас недостаточно оперативной памяти, несколько запросов могут выполняться медленнее.

Арво
источник
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

Примечание. Ваш параллельный запрос перейдет в состояние ожидания в случае массовой вставки в таблицу.

Панкай
источник