Мы работаем над проектом миграции с Oracle на SQL Server 2008. Таким образом, у нас есть много функций пакета Oracle, которые раньше вызывали другие хранимые процедуры. Эти функции были преобразованы SSMA в процедуры IMPL, которые выполняются посредством расширенных процедур из функций. Мы преобразовали большинство таких функций в простой UDF, где это было возможно. Теперь мы сталкиваемся с особой проблемой производительности. Запросы, вызывающие такие функции с помощью вызовов процедур IMPL, выполняются дольше. Интересно то, что те же самые запросы выполнялись на старом сервере с Sql Server 2008 за 2 минуты. Теперь на новом сервере с SQL Server 2008 R2 это занимает очень много времени (около 25-30 минут).
Мы убедились, что индексы и статистика также актуальны. Мы также заметили, что вызовы IMPL проходят через базы данных master и sysdb и используют внутренние таблицы для хранения и передачи результата обратно из вызова процедуры IMPL в функцию. Их распределение пространства отличается от старого сервера. Но им не хватает места. Могут ли они быть причиной проблемы? Есть ли какие-либо рекомендации по распределению пространства баз данных master / sysdb?
Базы данных имеют размер около 300 ГБ, а база данных tempdb - около 50 ГБ.
Старый сервер
- SQL Server 2008 / Windows
- Xenon Quad Core x4 - 3 ГГц, 64 ГБ ОЗУ
Новый сервер
- SQL Server 2008 R2 RTM
- Opteron 6 ядер x6 - 2,2 ГГц, 64 ГБ ОЗУ
Пожалуйста, дайте мне знать, если потребуется дополнительная информация.
Спасибо