Разделяет ли SQL Server сеансы? - PullRequest
0 голосов
/ 22 октября 2018

В SQL Server 2014 я открываю 3 сеанса в одной базе данных.На первом сеансе я запускаю Update Statistics A.Я рассчитываю, что это займет около 1 минуты.

Во время 2-го и 3-го сеансов я запускаю Update Statistics B (по одному за раз).Каждый из них также занимает около 1 минуты.

Затем я запускаю Update Statistics A в сеансе 1 и Update Statistics B в сеансе 2, оба в одно и то же время.Каждый запрос завершается примерно за 1 минуту, как и ожидалось.

Затем я запускаю Update Statistics A в окне 1 и Update Statistics B в окне 3, оба одновременно.Каждый запрос занимает около 2 минут.

Я проверил sp_who2 и вижу здесь 3 разных сеанса.Что может быть причиной этого?

Кроме того, когда я проверяю состояние запроса, я заметил в сценарии, где я запускаю запросы в окнах 1 и 3, одно состояние всегда выполняется, а другое либо работает, либоприостановлено.В другом сценарии, где я работаю на Windows 1 и 2, оба всегда работают.

1 Ответ

0 голосов
/ 22 октября 2018

Сессии всегда разные.Вы можете увидеть SPID в нижней части окна SQL Server Management Studio или сделать:

SELECT @@SPID 

, чтобы увидеть номер сеанса.SQL Server - это система одновременного множественного доступа, которая управляет своими сеансами и потоками.Количество активных сеансов зависит от того, что сеансы делают, и сколько сеанс выполнял какие-то действия и сколько ресурсов на машине, на которой работает SQL Server - как правило, больше памяти / CPUS приведет к более активным одновременным сеансам.Конечно, может быть несколько тяжелых сеансов, которые используют весь ресурс машины.

Сеансы несколько изолированы, но в зависимости от используемой блокировки сеансы в некоторой или очень изолированной степени друг от друга.SQL Server решит, когда временно приостановить сеанс, чтобы другие сеансы могли иметь очередь, используя ЦП / память.Если целая куча сеансов обновляет одну и ту же таблицу, может возникнуть конфликт, который замедлит работу SQL Server.То, что вы спрашиваете, это сколько времени нужно, чтобы проехать 100 миль.Зависит от курса.

Если у вас три сессии, выполняющие одно и то же, SQL Server не свернет три действия в одно.Это будет делать каждый (если возможно, одновременно) или последовательно.

...