У меня есть ~ 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. С чего мне начать искать?
источник
auto_update_statistics_async
.Ответы:
Поскольку загрузка вашего процессора низкая (и у вас отличный набор процессоров), я бы сначала проверил давление памяти. С SQL Express 2016 вы ограничены 1410 МБ памяти, но ваша виртуальная машина имеет только 2 ГБ. Дайте вашей ВМ больше памяти на 1 ГБ и посмотрите, поможет ли это. Вы также можете проверить ваш журнал SQL Server, если он подкачки памяти в файл.
Если это не помогает, попробуйте установить для параметра базы данных LEGACY_CARDINALITY_ESTIMATION значение ON. Ссылка: Использование уровня совместимости БД 130 со старым CE в SQL Server 2016 . Мы столкнулись с этим с некоторыми из наших обновлений; результаты будут варьироваться в зависимости от каждой базы данных.
источник
Следующий патч описывает похожую проблему. Возможно, стоит попробовать:
https://support.microsoft.com/en-us/help/3195888/fix-high-cpu-usage-causes-performance-issues-in-sql-server-2016
источник