none
[Performance] Se eu ficar fazendo selects em produção, poderei diminuir a performance ou danificar minha base/programa de alguma forma? RRS feed

  • Pergunta

  • Olá,
    Tenho um sistema que possui uma base SQL Server no nosso ambiente de produção.

    Ultimamente tenho feito vários testes diretamente em produção.
    Informo que só faço selects, joins, etc. Nada de updates ou inserts, e muito menos deletes.

    Logo pergunto:
    Isto poderá afetar a performance da minha aplicação?
    Tipo, dar algum erro de concorrência na base por eu estar fazendo selects dentro de uma base que possui um sistema realizando crud, etc.


    Isto pode danificar de alguma forma a base? O Sistema?


    Obrigado

    K2rto'4 - Analista de Sistemas
    "Hoje melhor do que ontem, amanhã melhor do que hoje!" 改 善



    • Editado TI DEV segunda-feira, 10 de novembro de 2014 12:18
    segunda-feira, 10 de novembro de 2014 12:16

Respostas

  • k2rto'4,

    É importante saber que dependendo do hint utilizado para estas consultas é possível sim degradar a performance de uma ou mais consultas através da concorrência. O que costuma gerar o "deadlock". Isto porque, mesmo que você não esteja manipulando os dados (INSERT, UPDATE ou DELETE) outros usuários podem estar e sua consulta será afetada por eles, que também poderão afetar a instrução executada por você.

    Se você pretende ver dados deste banco de modo pontual, utilize o hint "NOLOCK", também o nível de isolamento "READ UNCOMMITTED" (que é o menos restritivo, mas podem trazer "sujeiras") no seu SSMS. 

    Caso você precisa verificar constantemente dados em produção para testes ou verificação de performance e/ou outros, sugiro que você solicite o RESTORE de um dos backup´s deste banco para um ambiente isolado para homologação ou desenvolvimento (com o mesmo nome do banco de dados em Produção ou com outro).

    Para maiores informações veja:

    http://msdn.microsoft.com/library/ms181714(v=sql.110).aspx

    http://technet.microsoft.com/pt-br/library/ms178104(v=sql.105).aspx

    http://technet.microsoft.com/pt-br/library/ms173763(v=sql.105).aspx

    http://technet.microsoft.com/pt-br/library/ms175909(v=sql.105).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 10 de novembro de 2014 15:50
    Moderador

Todas as Respostas

  • Deleted
    segunda-feira, 10 de novembro de 2014 12:23
  • k2rto'4,

    Sobre suas dúvidas..... 

    Isto poderá afetar a performance da minha aplicação?

    .... Depende das suas consultas, uma forma de saber se esta interferindo ou não é verificando o tempo de resposta, se sua consulta retorna os resultados rápido, não esta interferindo em nada, se demorar pode ser que esteja interferindo, nesse caso... durante a execução execute a SP "sp_who2" em outra seção e verifique se tem algum bloqueio.

    Isto pode danificar de alguma forma a base? O Sistema?

    .... De forma alguma, a execução da instrução "Select" nunca vai danificar sua base.



    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    segunda-feira, 10 de novembro de 2014 12:58
  • k2rto'4,

    É importante saber que dependendo do hint utilizado para estas consultas é possível sim degradar a performance de uma ou mais consultas através da concorrência. O que costuma gerar o "deadlock". Isto porque, mesmo que você não esteja manipulando os dados (INSERT, UPDATE ou DELETE) outros usuários podem estar e sua consulta será afetada por eles, que também poderão afetar a instrução executada por você.

    Se você pretende ver dados deste banco de modo pontual, utilize o hint "NOLOCK", também o nível de isolamento "READ UNCOMMITTED" (que é o menos restritivo, mas podem trazer "sujeiras") no seu SSMS. 

    Caso você precisa verificar constantemente dados em produção para testes ou verificação de performance e/ou outros, sugiro que você solicite o RESTORE de um dos backup´s deste banco para um ambiente isolado para homologação ou desenvolvimento (com o mesmo nome do banco de dados em Produção ou com outro).

    Para maiores informações veja:

    http://msdn.microsoft.com/library/ms181714(v=sql.110).aspx

    http://technet.microsoft.com/pt-br/library/ms178104(v=sql.105).aspx

    http://technet.microsoft.com/pt-br/library/ms173763(v=sql.105).aspx

    http://technet.microsoft.com/pt-br/library/ms175909(v=sql.105).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 10 de novembro de 2014 15:50
    Moderador