Я занимаюсь заменой устаревшего веб-приложения, написанного в ASP.NET 1.0. Мой план состоит в том, чтобы перестроить новый графический интерфейс с использованием MVC5 поверх существующей схемы базы данных. В рамках процесса я перенес всю базу данных с SQL Server 2000 на SQL-Server 2014 и указал тот же веб-экземпляр на новом сервере БД.Почему DataAdapter.Fill() медленнее с SQL-Server-2014, чем с SQL-Server-2000?
Хотя запросы на новом сервере выполняются намного быстрее, обновление базы данных привело к замедлению нашего веб-сайта. Я проследил медленность вызова «DataAdapter.Fill()». При подключении к SQL-серверу 2014 вызов из веб-приложения занимает около 10 секунд вместо 3 секунд со старым сервером БД (~ 3 раза медленнее). Основной sproc очень быстрый, так что это не узкое место.
Новый сервер БД находится в одной сети, поэтому латентность не должна быть проблемой. Веб-сервер может пинговать как старый, так и серверы БД менее чем за 10 мс.
Любая идея, почему обновление БД вызвало бы такое резкое замедление?
Возможно ли, что ваши индексы необходимо перестроить? – Capellan
Индексы не являются проблемой. Даже при «SET ARITHABORT OFF» базовый sproc достаточно быстр. Запуск «DBCC DROPCLEANBUFFERS» и «DBCC FREEPROCCACHE» немного ускорил sproc, но sproc не является узким местом. Моя нынешняя теория заключается в том, что вызов DataAdapter.Fill() медленнее из-за несоответствия между версиями SQL. Поскольку я выполняю вызов через платформу .NET 1.0, он может полагаться на API поддержки устаревания, который работает медленнее. У меня нет никаких доказательств или экспертизы ни на одном из них, хотя именно поэтому я размещаю здесь. – CowboyBebop