Um pouco de como as consultas usam a arquitetura SQL Server

A  Resumo do Ciclo Básico de uma declaração SELECT.

Porque a teoria é importante tanto para os DBAs quanto para os desenvolvedores de sistemas?
Simples, saber como é os caminhos para que sua consulta lhe traga o resultado lhe permitirá identificar com mais precisão e eficácia os gargalos de dados.
Como dizem, meio mais rápido de se chegar ao outro lado da rua (ou de um ponto A para B) é seguindo uma linha reta, trocando em miúdos, para uma forma eficiente do SQL Server trazer seus dados mais rapidamente é evitando caminhos sinuosos.

Vamos para prática do negócio:

Figura 1.1 mostra todo o ciclo de vida de uma consulta SELECT, descrita aqui:

1.  O SQL Server NetWork Interface (SNI) no cliente estabelece conexão com com o SNI no SQL Server usando o protocolo de rede como TCP/IP. Em seguida ele cria uma conexão com TDS endpoint sobre a conexão TCP/IP e envia a instrução SELECT para SQL Server como uma mensagem de TDS.

2. O SNI no SQL Server desempacota a mensagem TDS, lê a instrução SELECT e passa um “SQL Command” para o Command Parse.

3. O Command Parse analisa o plano de cache na área de buffer para verificar se existe a consulta que seja utilizável e se existe um plano de consulta que combine com a instrução recebida. Quando não achar um ele cria uma árvore de consulta com base na instrução SELECT e passa para o Optimizer para gerar um plano de consulta.

4. O plano de consulta é criado e então passado para o query executor para execução.

Obs¹ (O Query Optimizer é o bem mais precioso da equipe do SQL Server e um das partes mais complexas e secretas do produto. Felizmente, são apenas os algoritmos de baixo nível e fonte de código que são tão bem protegidos (mesmo dentro Microsoft), e pesquisa de observação pode revelar como o Optimizer funciona.
O que é conhecido como um otimizador “baseado nos custos”, significa que ele avalia várias maneiras de executar uma consulta e em seguida, escolhe o método que considere que terá o menor custo para executar).

5. Em tempo de execução, a query executor determina quais os dados necessários a serem lidos para completar o plano de consulta para que ele passe a solicitação para os Access Methods no mecanismo de armazenamento através de um Interface de OLE DB.

Obs² (Access Methods é uma coleção de código que fornece as estruturas de armazenamento para os seus dados e índices, bem como a interface através da qual os dados são recuperados e modificados. Ele contém todos os códigos para recuperar dados, mas, que na verdade não irão executar a operação em si; passa o pedido para o Gerenciador de Buffer.
Suponha que nossa instrução SELECT precisa ler apenas algumas linhas que estão todos em uma única página. O Código do Access Methods vai pedir ao Buffer Manager para recuperar a página para que ele possa preparar um conjunto de linhas para passar de volta o OLE DB para Relational Engine).

6. Os métodos de acesso necessários para ler uma página do banco de dados para concluir a solicitação do o executor de consultas e pedir o Gerenciador de Buffer para configurar a página de dados.

7. O Gerenciador de Buffer verifica o cache de dados para ver se ele já tinha a página em cache. Se não estava no cache ele puxará a página do disco, colocará em cache, e passará de volta para o Métodos de acesso.

8. Finalmente, os métodos de acesso passa o conjunto de resultados de volta para o Relational Engine para enviar para o cliente.

cfrio_

Próximo post explicarei como podemos chegar do ponto A ao B sem dar ou evitar dar muitas voltas para chegar ao resultado.

Marcado com: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Publicado em Administração SQL, Desempenho SQL, SQL SERVER

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Arquivos
Follow SQL DATA BLOG on WordPress.com
%d blogueiros gostam disto: