Eu notei a degradação do desempenho há duas semanas impactando um de nossos aplicativos com um back-end do SQL Azure. Ele está rodando no V12 no nível S1 90% do tempo, às vezes escalando para S2, S3 ou P1.
Basicamente, eu estava passando por tempos de execução de consultas significativamente mais lentos, especialmente em consultas INSERT. Então eu testei e benchmarked, testei e benchmarked e, em seguida, testei e aferi um pouco mais. Com cada passo eu tentei tirar fatores incertos da equação. Acontece que desde que nos mudamos para o V12 S1, o desempenho foi muito mais lento do que costumava ser.
O que acabei descobrindo foi fácil de reproduzir:
Crie dois novos bancos de dados de exemplo (Adventureworks_LT) no portal do Azure. Um em um novo servidor v12 e outro em um novo servidor V11. Ambos os níveis S1.
Em seguida, execute meu benchmark (tipo de) em ambos:
DECLARE @start_time DATETIME, @end_time DATETIME
SET @start_time = CURRENT_TIMESTAMP
DECLARE @cnt INT = 0;
DECLARE @until INT = 100;
DECLARE @timeNow DATETIME;
WHILE @cnt < @until
BEGIN
Set @timeNow = CURRENT_TIMESTAMP;
INSERT INTO dbo.ErrorLog
(
ErrorTime,
UserName,
ErrorNumber,
ErrorMessage
)
VALUES
(
@timeNow,
'BENCHMARK',
DATEDIFF(MILLISECOND,@timeNow,CURRENT_TIMESTAMP),
'BENCHMARK'
)
SET @cnt = @cnt + 1;
WAITFOR DELAY '00:00:00:500'; /* wait 500 miliseconds*/
END
SET @end_time = DateAdd(MILLISECOND,(@until)*-500.,CURRENT_TIMESTAMP)
/*subtract 500ms per iteration to make up for the built-in delay*/
SELECT DATEDIFF(ms, @start_time, @end_time) as 'total query execution time', DATEDIFF(ms, @start_time, @end_time)/@until as 'average query execution time'
SELECT * FROM sys.dm_db_resource_stats;
Meus resultados:
Tempo médio de execução V11: 17ms
Tempo médio de execução V12: 131ms
Algumas rodam, a diferença é maior do que outras, mas o V11 está superando o desempenho da V12 a cada vez.
sys.dm_db_resource_stats mostra agora sinais de maximizar os limites da DTU, ou até mesmo estar perto disso. Então, o que você acha que está acontecendo aqui? Estou convencido de que estou ligado a algo, mas meu pessoal de suporte da Microsoft continua dizendo, otimizar, escalar, fazer o perfil de suas consultas, etc.
Acho que estou apenas procurando alguém com uma experiência semelhante que tenha chegado a uma causa básica com a microsoft, ou até mesmo alguém que possa me dizer que meu benchmark não é bom.