
Я использую Microsoft SQL Server 2017 Web Edition в виртуализированной среде, размещенной на Amazon EC2. Согласно MicrosoftРедакции и поддерживаемые функции SQL Server 2017на странице «Максимальная вычислительная мощность, используемая одним экземпляром — SQL Server Database Engine» — «Ограничена меньшим из 4 сокетов или 16 ядер».
Согласно диспетчеру задач Windows в виртуальной среде у меня 4 виртуальных процессора. Но когда я запускаю длительный, обременительный SQL-запрос, загрузка ЦП достигает максимума в 25%.
Если ограничение для Web Edition меньше 4 сокетов или 16 ядер, разве мне не должно быть разрешено использовать 100% моих виртуальных процессоров? Или я неправильно понимаю, как Windows или SQL Server классифицируют виртуальные процессоры?
Спасибо
решение1
Согласно диспетчеру задач Windows в виртуальной среде у меня 4 виртуальных процессора. Но когда я запускаю длительный, обременительный SQL-запрос, загрузка ЦП достигает максимума в 25%.
Это означает, что даже если бы виртуальная машина отображалась как 1 ядро на сокет (что было бы плохо), она все равно могла бы использовать все 4 на лицензию. Таким образом, запрос выполняет последовательный план, а не параллельный.
Тот факт, что это "долго выполняющийся запрос" и он занимает "25% CPU", означает, что запрос, вероятно, написан не очень хорошо или дизайн схемы не на должном уровне. В любом случае, запуск его через параллельный план (если это вообще возможно, учитывая запрос) только заставит сервер использовать процессор больше, чем обычно.
Лучше всего взглянуть на запрос, схему и вспомогательные объекты и настроить их.