SQL Server замедляется после дублирования базы данных - PullRequest
2 голосов
/ 18 июня 2009

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

Процесс создания новой базы данных, который я предпринял, таков:

  1. Создание сценариев CREATE для таблиц с использованием автоматического сценария sql-серверов
    генератор.
  2. Запустить сценарии создания таблицы
  3. Вставить все данные в новую базу данных. используя INSERT INTO с выбором из существующая база данных.
  4. Запустите все сценарии изменения, чтобы создать внешние ключи и любые индексы

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

Спасибо.

Ответы [ 5 ]

5 голосов
/ 18 июня 2009

сначала я бы хотел убедиться, что автоматическое создание статистики включено, вы также можете установить автоматическое обновление статистики в true

после этого я обновлю статистику, запустив

sp_updatestats

или

UPDATE STATISTICS

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

4 голосов
/ 18 июня 2009

Вы писали индексы из таблиц в исходной базе данных? Отсутствующие индексы, безусловно, могут быть причиной низкой производительности.

3 голосов
/ 18 июня 2009

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

Находятся ли обе БД в одной коробке, а их файлы данных - в одном и том же массиве дисков?

2 голосов
/ 18 июня 2009

Можете ли вы сказать , что об этих запросах стало медленнее? Новые планы доступа? Те же планы, но они работают медленнее? Они выполняют медленнее или они приостановлены больше? все запросы стали медленнее или только некоторые? И последнее, но не менее важное: откуда вы знаете , т.е. что именно вы измерили и как?

Некоторые из обычных подозреваемых могут быть:

  • Новое хранилище намного медленнее (.mdf на медленном диске или на занятом диске)
  • Вы изменили структуру данных во время перемещения (т.е. некоторые индексы не были перенесены)
  • Вы изменили размер данных (т. Е. Параметры сжатия), что привело к увеличению количества страниц для тех же данных
  • Изменилось ли что-нибудь еще одновременно, новый код приложения или что-то подобное?
  • Расширяя размер данных (не упоминая удаляя старые таблицы), вы теперь уничтожаете пул буферов (уменьшилось ли время жизни страницы в счетчиках производительности?)
0 голосов
/ 18 июня 2009

Посмотрите, как вы устанавливаете начальный размер и параметры роста. Если вам не хватило места для начала, или если вы увеличиваете на 1 МБ за раз, что может быть причиной проблем с производительностью.

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