Тайм-аут запросов SQL Server (оба для чтения / записи) при выполнении запроса отчета - PullRequest
1 голос
/ 01 декабря 2011

У меня есть база данных SQL Server 2005, которая имеет около 30-40 подключений к одной и той же базе данных в рабочее время.

Когда я выполнил запрос отчета (этот запрос занимает от 30 минут до 1 часа), другойсоединения начали получать тайм-аут при выполнении выбора / записи в некоторых конкретных таблицах.Этот запрос отчета делает SELECT с двумя или тремя уровнями подзапросов и объединений.Я посмотрел журнал SQL Server и не смог найти никакой ошибки.Просмотр Activity Monitor не показывает ни одного запущенного процесса, кроме tempdb (который показывает Running).Проверяя, есть ли какие-либо блокировки на таблицах, покажите только общую блокировку.

Я пошел дальше и проверил, достаточно ли у базы данных tempdb (500 МБ с возможностью увеличения до 10 ГБ).

Знаете ли вы, чтоможет вызвать эту проблему?С чего мне начать смотреть?(Сейчас я смотрю на оптимизацию, чтобы сообщить о запросе)

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Вам определенно нужно попытаться исправить этот запрос.В то же время вы можете в качестве меры поддержки диапазона установить уровень изоляции в запросе отчета на READ UNCOMMITTED

Это может вызвать неточности в вашем отчете (потому чтоон может прочитать транзакцию, которая в конечном итоге откатывается), но это должно снизить конкуренцию, вызываемую этим запросом.

1 голос
/ 02 декабря 2011

Вам нужно запустить профиль в базе данных, когда вы выполняете запрос. по крайней мере, это самый быстрый и простой способ сделать это. Очевидно, делайте это вне работы, когда вы не обременяете своих пользователей запросом из ада. Не принимайте рекомендации как евангелие, но они, безусловно, помогут вам двигаться в правильном направлении.

Также проверьте план запроса. Я считаю, что 2005 год позволяет вам создать план запроса прямо здесь. Если нет, вы можете получить Management Studio / Analyzer для SQL Express 2008, и он будет отлично работать в базе данных 2005 года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...