DesafioSQL – Desafio 2 (nível Intermediário)

Início Fóruns Desafios SQL – Lista de desafios DesafioSQL – Desafio 2 (nível Intermediário)

  • Este tópico está vazio.
Visualizando 0 resposta da discussão
  • Autor
    Posts
    • #691
      ————— Sobre o Desafio 2 —————

       

      Usuário está reclamando de lentidão ao executar uma tela de consulta que retorna dados de clientes com base em um filtro por uma chave interna.. Você precisa otimizar a execução da consulta o máximo possível, até onde você consegue chegar?

       

      Performance do desafio antes de aplicar a solução.

       

       

      Performance do desafio depois de aplicar a solução.

       

       

      ————– Como executar o desafio ————–

       

      O “problema” do desafio é simulado via um applicativo que simula as requisições mencionadas pelo usuário.

       

      Para executar o app e executar o load do desafio execute os seguintes passsos:

       

      1. Clique aqui para fazer o download dos arquivos necessários para executar o desafio.
      2. Restaure o arquivo de backup (.bak) na instância SQL que será utilizada.
      3. Abrir o aplicativo DesafioSQL.exe, clicar no botão “Criar ConnectionString”, especificar a instância SQL Server a ser utilizada (Obs. só funciona com WinAuth), clicar no botão “Testar Conexão”, selecionar o banco criado no passo 1 e clicar em OK.
      4. Clicar no botão “Executar Desafio”. Nesse momento, o app irá enviar as requisições para a instância especificada para simular o problema do desafio.

       

      Opcional: Você pode ajustar os parâmetros “Threads em paralelo” e “Número de iterações por thread” pra aumentar/diminuir o load enviado pra instância SQL.

       

      ————– Mais info e requisitos ————–

       

      • O nível desse desafio é Fabiano*.
      • Como o tempo pra execução do Desafio pode variar de acordo com os recursos de máquina do usuário, o baseline deve ser considerado com base na execução do desafio sem nenhuma alteração, ou seja, rode o desafio sem efetuar nenhuma alteração, guarde os tempos/uso de recursos e utilize esses números como base para trabalhar em uma solução.
        Por exemplo, se na sua máquina o desafio levou 5 minutos pra rodar, utilize esse número como base para trabalhar na sua solução.
        Esse desafio simula a execução do relatório por vários usuários ao mesmo tempo e utilizando filtros aleatórios. A ideia, é simular a execução do código utilizando diversos valores. Considerando isso, você também pode trabalhar utilizando o tempo de execução individual do relatório, ou seja, quanto tempo demora pra efetuar apenas 1 execução do relatório.
      • O arquivo de banco foi criado no SQL Server 2019, portanto você precisa de uma instância nessa versão (necessáriamennte a última release disponível) e edição developer.
      • É permitido efetuar qualquer alteração no schema do banco com exceção do datatype da coluna Col1 que precisa ser do tipo IMAGE e não pode ser modificado.
      • Obviamente, o resultado precisa ser consistente.
      • Otimizações com força bruta não serão consideradas, ou seja, não adianta adicionar mais recursos de hardware (CPU, Memória, disco e etc).
      • Você pode utilizar as imagens Antes e Depois acima pra verificar quanto tempo demorou pra rodar o desafio após aplicar a minha solução.
      • A solução deve necessáriamente conter as seguintes informações:
        Nome do desafio. (ex. “DesafioSQL – Desafio <N>”)
        Versão e edição do SQL Server utilizada. (@@Version é sua amiga, copia e cola o resultado dela pra gente.)
        Número de CPUs disponíveis para o SQL Server (MAXDOP utilizado na instância).
        Quantidade de memória em GB disponível para o SQL Server.
        Se a execução foi utilizando uma instância local (mesma máquina rodando o App de desafio) ou remota.
      • Sua solução precisa rodar na máquina dos avaliadores, ou seja, se sua solução “não funcionar” na minha máquina ela não será considerada. Usuários que dizerem que “na minha máquina funciona” ganharão um bônus por ousadia, e serão ignorados.
      • Se você tiver algum problema ao rodar o desafio, dúvida do que pode ou não pode fazer ou questionamento você pode entrar em contato conosco via e-mail ou utilizar o fórum de discussão dos desafios.
      • Solução bônus – Solução que não requer alteração de código ou schema.
      • Todas as soluções válidas receberão uma nota que pode variar entre 0 a 100. Não há um prazo para envio da nota, porém, prometemos fazer o melhor possível pra conseguir enviar dentro de um tempo razoável. Todas as notas serão publicadas na página de Ranking junto com o nome do usuário que enviou a nota, caso você não queira que sua nota seja publicada, você deve nos informar via e-mail.

       

      * Nota: Legenda dos níveis:

       

      ————– Critérios avaliados na solução ————–

       

      • Clique aqui pra ver quais os critérios utilizados na avaliação e definir a pontuação.

       

      ————– Dúvidas e problemas ————–

       

Visualizando 0 resposta da discussão
  • O fórum ‘Desafios SQL – Lista de desafios’ está fechado para novos tópicos e respostas.