tempdb SQL Server блокировка - PullRequest
       17

tempdb SQL Server блокировка

1 голос
/ 07 декабря 2009

Наше приложение работает вместе с другим приложением на компьютере клиента. Мы приложили некоторые усилия, чтобы избежать длительных блокировок в базе данных tempdb, поскольку это явно сильно влияет на параллелизм. Другое приложение, однако, делает такие вещи, как:


начать транзакцию
create #Table (...);
вставить в #Table (....) значения (...);
operation_for_totally_six_seconds ().
фиксации;

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

Теперь я ожидаю, что есть способ изолировать мое приложение от другого приложения, например, сказать серверу sql назначить мне другую базу данных tempdb, но я не нашел способа. Это как-то возможно, или это решение для установки нашей базы данных на другой экземпляр mssql?

С уважением, Йенс Норденбро

Ответы [ 2 ]

3 голосов
/ 07 декабря 2009

длительные блокировки в базе данных tempdb с это явно влияет на параллелизм плохо

Это на самом деле совсем не очевидно. Длительные блокировки важны только в том случае, если вы и другое приложение используете те же самые блокировки . Пример кода, который вы разместили, вполне законен. Прежде всего, #temp - это таблица, специфичная для соединения, которую никакое другое соединение не может даже увидеть. Но даже если это будет глобальный ресурс, он будет принадлежать другому приложению, и, следовательно, у вас не будет блокировок для приобретения бизнеса.

В качестве упражнения откройте окно запроса SSMS и выполните следующее:

begin transaction;
create table #temp (a int);

Затем откройте второе окно запроса и выполните то же самое. QED они не блокируют друг друга, несмотря на создание одной и той же таблицы #temp.

Если tempdb действительно является бутылочным горлышком, вам нужно провести дополнительное расследование и найти фактические ресурсы, на которых происходит конфликт.

1 голос
/ 07 декабря 2009

Один из вариантов - запустить приложение в другом экземпляре сервера sql на том же компьютере. Таким образом, у вас будет свой собственный tempdb.

...