Pergunta

Estou procurando informações sobre como o SQL Server realmente lida com a execução de consultas em detalhes mais refinados (como quais dados são mantidos em buffer/memória e como ele decide obter dados novos, mesmo que haja uma alteração de atualização em apenas uma coluna de uma tabela envolvida em uma consulta etc)

Se alguém souber fontes, por favor me avise?


Temos um aplicativo da Web usando o SQL Server 2000, ele possui leituras pesadas de quase 70% das tabelas (painel) a cada 30 segundos. E ao mesmo tempo muitas gravações estão acontecendo.

Informe -me alguma dica para otimização do cenário acima?

Foi útil?

Solução

Ninguém poderá fornecer uma resposta sobre como resolver seu problema de otimização. Isso requer acesso ao seu servidor de banco de dados. Para resolver seus problemas, você precisa entender aproximadamente como o banco de dados funciona e, para isso, você precisa fazer alguma leitura.

Os recursos on-line estão OK, no entanto, os três livros a seguir não têm preço. Os dois primeiros livros têm informações muito detalhadas sobre como funciona o SQL Server. O último é um guia de como escrever consultas, mas com uma discussão sobre como o mecanismo também vê as consultas.

  1. Kalen Daleney: SQL Server 2008 Internals
  2. SQL Server 2005: Solução de problemas práticos:
  3. Ben Gan et al: Inside SQL Server 2008: consulta T-SQL

Outras dicas

Levaria muitas postagens para responder às perguntas do tipo interno, sugiro que você comece a ler alguns dos white papers / blogs e alguns livros.

Para 2000, a arquitetura do SQL Server de Ken Henderson fornecerá detalhes internos profundos, para as edições mais recentes do SQL, ele fez um problema prático de 2005, o que não é ruim, e o livro Internal SQL 2008 de Kalen Delaney 2008 é muito bom.

Você deve examinar o plano de execução.

Imprensa Ctrl-L no SSMS ou emissão SET SHOWPLAN_TEXT ON antes de executar a consulta.

Isso fornecerá informações detalhadas sobre quais índices são usados, que ingressam em algoritmos aplicados etc.

Você também pode querer ver as estatísticas:

SET STATISTICS TIME ON
SET STATISTICS IO ON

, o que fornecerá as informações sobre quantas leituras foram feitas a partir de tabelas reais, cache etc. e quanto tempo (real e CPU tempo) fizeram todas as consultas.

Sobre o SQL Server 2008 Buffer Management: http://msdn.microsoft.com/en-ca/library/aa337525.aspx

Então você pode navegar com a barra lateral esquerda para obter informações sobre outros assuntos.

No que diz respeito às fontes externas, Msdn tem um recurso abrangente para otimizar sua instalação do SQL Server 2000, particularmente a Padrões e práticas Artigo sobre desempenho e escalabilidade.

Se você souber onde começar a procurar, adote uma abordagem de baixo para cima para examinar os perfis SQL e os planos de consulta, como foi mencionado. Caso contrário, comece de cima para baixo e aprenda sobre os custos envolvidos na recompilação de consultas, como indexar de maneira eficaz e como o otimizador de consulta usa estatísticas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top