Я создал пробную учетную запись на Azure, и я развернул свою базу данных с SmarterAsp
.
Когда я запускаю сводный запрос на SmarterAsp\MyDatabase
, результаты появляются в 2 секунды.
Однако при выполнении того же запроса на Azure\MyDatabase
потребовалось 94 секунды.
Я использую SQL Server 2014 Management Studio (пробная версия) для подключения к серверам и запуска запроса.
Является ли эта разница в скорости, потому что моя учетная запись является пробной учетной записью?
Некоторая связанная информация по моему вопросу
запрос:
ALTER procedure [dbo].[Pivot_Per_Day]
@iyear int,
@imonth int,
@iddepartment int
as
declare @columnName Nvarchar(max) = ''
declare @sql Nvarchar(max) =''
select @columnName += quotename(iDay) + ','
from (
Select day(idate) as iDay
from kpivalues where year(idate)[email protected] and month(idate)[email protected]
group by idate
)x
set @columnName=left(@columnName,len(@columnName)-1)
set @sql ='
Select * from (
select kpiname, target, ivalues, convert(decimal(18,2),day(idate)) as iDay
from kpi
inner join kpivalues on kpivalues.idkpi=kpi.idkpi
inner join kpitarget on kpitarget.idkpi=kpi.idkpi
inner join departmentbscs on departmentbscs.idkpi=kpi.idkpi
where iddepartment='+convert(nvarchar(max),@iddepartment)+'
group by kpiname,target, ivalues,idate)x
pivot
(
avg(ivalues)
for iDay in (' + @columnName + ')
) p'
execute sp_executesql @sql
Запуск этого запроса на 3 разных серверах дал мне разные результаты с точки зрения Истекшего времени, пока моя сводная таблица не появится на экране:
Azure - Истекшее время = 100.165 секунд
Smarterasp.net - Истекшее время = 2.449 секунд
LocalServer - Истекшее время = 1.716 с
Что касается моей пробной учетной записи на Azure, я сделал ее с главной целью, чтобы проверить, будет ли у меня лучшая скорость, чем Smarter при запуске хранимой процедуры, такой как выше. Я выбираю для своей базы данных Service Tier - Basic, Performance level -Basic (5DTU) и Max. Размер 2 ГБ.
Моя база данных имеет 16 таблиц, 1 таблица имеет 145284 строки, а размер базы данных - 11 МБ. Его тестовая база данных для моего приложения.
Мои вопросы:
- Что я могу сделать, чтобы оптимизировать этот запрос (sp)?
- Рекомендуется ли Azure для небольших баз данных (100mb-1Gb)? Я имею в виду производительность и стоимость!
Выводы на основе ваших входов:
- Я сделал предложенные изменения в запросе, и производительность была улучшена с более чем 50% - Спасибо Remus
- Я протестировал свой запрос на Azure S2, а время Истекшее время для обновленного запроса - 11 секунд.
-
Я снова проверил свой запрос на P1, а время Истекшее время составляло 0,5 секунды:)
-
тот же обновленный запрос на SmarterASP имел Истекшее время 0,8 секунды.
Теперь для меня ясно, что такое уровни в Azure, и как важно иметь очень хороший запрос (я даже понял, что такое индекс и его преимущество/недостаток)
Спасибо всем, Lucian