SQL Azure inserir consulta dez vezes mais lenta em V12 que V11?

4

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.

    
por enter.net 01.02.2016 / 15:43

1 resposta

1

Recebi uma resposta do suporte da Microsoft, que faz sentido. De qualquer forma para pesquisas futuras:

No matter what the platform, the editions (not Web/Biz) provides capacity to ensure the DTU and response constraints as specified by https://azure.microsoft.com/en-us/documentation/articles/sql-database-benchmark-overview/#metrics (look at the Metrics section) The response time constraints for basic and standard are expressed as seconds at 90 percentile bar and thus implicitly do not guarantee ms order average.

To summarize: We cannot compare between V1 and V12 performance by measuring the average milliseconds to complete specific statement.

    
por 03.02.2016 / 14:15