У меня установлен SQL Server Express 2017 (RTM) 14.0.1000.169 на маломощном сервере W2019 в AWS. Он имеет 2 ГБ оперативной памяти и 2,40 ГГц процессор. (T2.small).
У меня была такая же настройка на других машинах AWS с меньшей мощностью, чем у этой, и у них, похоже, нет этой проблемы. Но эти машины будут иметь SQL Server 2014 и Windows 2008R2.
Проблема в том, что когда я выполняю конкретные запросы, они занимают огромное количество времени. В моих приложениях у меня есть подпрограмма, которая прослушивает параметры для вызываемой хранимой процедуры, так что .NET может предоставлять параметры по мере необходимости, без необходимости кодировать каждую отдельную процедуру отдельно.
Для этого я запускаю
[sys].[sp_procedure_params_100_managed] @procedure_name=@PRC
но эта процедура на этой новой машине занимает до 30 секунд.
Итак, я вручную создал что-то более простое, чтобы посмотреть, могу ли я просмотреть какие-либо проблемы с планом выполнения, но он все еще работает очень медленно:
select o.name, prm.*
from sys.parameters prm
inner join sys.objects o on prm.object_id=o.object_id
where o.type='P'
and o.name='prc_THEPROCNAME'
Для ясности, во всей базе данных есть только 30 хранимых процедур. Но приведенный выше запрос занимает 2860 мс для запуска в SSMS и показывает 1285 операций чтения.
Когда я запускаю это на своей маленькой машине win10 с SQL Server Express 2014, это занимает 12 мс с 568 чтениями в аналогичной (но большей) базе данных.
Так что мой вопрос таков: что за проблема с этой средой? Является ли t2.small слишком слабым для Win2019? SQL Server 2017 имеет гораздо больше накладных расходов, чем SQL Server 2014? Или возможно, что у меня есть неправильная конфигурация где-то в моей настройке SQL Server?