Большой запрос увеличивает TempDB - PullRequest
3 голосов
/ 03 декабря 2009

У меня огромный запрос на моем сервере SQL 2005. Это нужно запускать один раз в день, но когда этот запрос выполняется, temp db увеличивается с 2 ГБ до 48 ГБ. Как лучше всего оптимизировать или найти причину роста базы данных tempdb, когда этот запрос добавляет / обновляет записи по 80 КБ (~ 120 столбцов) в одной таблице?

Что мне делать в этом запросе, чтобы tempdb не рос так сильно?

Любые предложения будут оценены.

Примечание: Этот запрос не имеет никаких временных переменных, табличных переменных или CTE. просто куча

INSERT INTO ... with MULTITABLE JOINS with SUBQueries...

Ответы [ 2 ]

2 голосов
/ 03 декабря 2009

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

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

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

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

Конечно, вы могли бы просто изменить размер своей временной базы данных, чтобы она оставалась на 48 ГБ, по крайней мере, так она и не выиграет; вам не нужно время, чтобы расти, когда эта штука работает.

...