Процессор SQL Server 2016 с высокой скоростью простоя и крайне медленные запросы

10

У меня есть ~ 10-дневная установка WinServer2012R2 и SQL Server Express 2016 для тестирования. Я единственный пользователь на этой машине. База данных с .bak из SQL Server 2005 размером ~ 250 МБ восстанавливается без каких-либо проблем. После перезагрузки машины процесс «SQL Server NT - 64 Bit» использует 0% ЦП.

Через пару минут или часов и несколько простых запросов (без обновлений / вставок!) Из ЦП SSMS использование «SQL Server NT - 64 Bit» внезапно скачет до ~ 15% и остается там, даже в режиме ожидания. С этого момента запросы, которые обычно занимают менее секунды, внезапно занимают 2 минуты. Во время фактического запроса загрузка ЦП НЕ увеличивается. Сервер становится практически непригодным для использования в этом состоянии.

Только подключение к SQL Server Profiler занимает более 30 секунд. Помимо моих собственных запросов я вижу только очень мало запросов от SQLServerCEIP / SQLTELEMETRY, ~ 3 в минуту.

Перезапуск SQL-сервера не решает проблему. Загрузка процессора возвращается обратно к ~ 15%. Даже в нерабочее время SQL-Server не восстанавливается. Только перезагрузка всей машины решает проблему.

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

Это виртуальная машина с 2 ГБ оперативной памяти и двумя Xeon на 2 ГГц. У меня также есть VS2016 на нем, и это действительно быстро. Нет антивируса, даже Windows Defender. Уже поздно здесь. Я попробую sp_whoisactive завтра. Мне действительно интересно, ЧТО там делает SQL-сервер ... На предыдущей машине с 1 ГБ та же БД работала под SQLServer2005 в течение 10 лет без проблем ...

Я не эксперт по SQL-Profiler. С чего мне начать искать?

Андреас Стейдл
источник
Может быть плохая установка. Рассмотрим новую установку ОС и SQL. Все сервисные пакеты. Вы можете преследовать такие вещи навсегда. Если проблема все еще существует, вы можете разумно отменить установку.
папараццо
7
У вас установлен антивирус? Я бы добавил исключение для исполняемого файла SQL Server, а также файлов MDF, NDF и LDF.
Рэндольф Уэст
1
Вы также смотрели настройки энергосбережения?
Рэндольф Уэст
Я помню похожее поведение 2005 года, если включена опция базы данных auto_update_statistics_async.
Роджер Вольф
Попробуйте перевести базу данных в автономный режим и проверьте использование процессора. Если загрузка процессора не снижается, то проблема с ядром базы данных сервера sql.
Мухаммед Юсуф Сулахрия

Ответы:

3

Поскольку загрузка вашего процессора низкая (и у вас отличный набор процессоров), я бы сначала проверил давление памяти. С SQL Express 2016 вы ограничены 1410 МБ памяти, но ваша виртуальная машина имеет только 2 ГБ. Дайте вашей ВМ больше памяти на 1 ГБ и посмотрите, поможет ли это. Вы также можете проверить ваш журнал SQL Server, если он подкачки памяти в файл.

Если это не помогает, попробуйте установить для параметра базы данных LEGACY_CARDINALITY_ESTIMATION значение ON. Ссылка: Использование уровня совместимости БД 130 со старым CE в SQL Server 2016 . Мы столкнулись с этим с некоторыми из наших обновлений; результаты будут варьироваться в зависимости от каждой базы данных.

fx1974
источник
Тем временем я обнаружил, что запуск / остановка другого программного обеспечения с чрезмерным использованием памяти (например, Visual Studio) усугубляет проблему воспроизводимым образом. Так что я бы подтвердил, что это проблема с памятью - SQL-сервер начинает пейджинг, когда сильно сжимается.
Андреас Стейдл