Introdução à Arquitetura do SQL Server – Parte 01

Nesta nova série de artigos estarei explicando à arquitetura do SQL Server. Então vamos lá.

Query Execution
É importante entendermos como as queries são processadas pelo SQL Server (após o tráfego e tratamento dos pacotes que saem de uma aplicação cliente até a Storage Engine do SQL).

O plano de execução é uma sequência de etapas empregadas pelo SQL Server na execução das queries. Vale ressaltar logo de início que se a query foi executada recentemente, o plano para a execução daquela query já estará presente no cache do banco e será reutilizada; caso contrário será gerado um novo plano para a query em questão. Portanto, para cada query obrigatoriamente existe um plano de execução.

É exatamente neste ponto que surge um novo personagem: o otimizador de consulta. É ele quem recebe a query e, analisando a forma mais eficiente para executá-la, gera o plano de execução. O otimizador toma por base alguns critérios chaves para definir o plano de execução, mas um desses critérios que desejo destacar são as estatísticas. O otimizador depende diretamente das estatísticas das colunas e índices das tabelas. Se essas estatísticas estiverem desatualizadas o otimizador poderá não gerar o melhor plano para a execução da query.

Otimizador de consulta

Analisando o fluxo da figura acima temos:
1. A query chega;
2. O otimizador define a forma mais eficiente para execução;
3. O plano é gerado.

Mas tem algo faltando aqui: o “parser”. Antes do otimizador entrar em ação, o parser checa a sintaxe da query, validando se está tudo ok, e, em seguida, traduz esses comandos T-SQL para um formato interno, conhecido como árvore de pesquisa. A partir daí o otimizador recebe essa árvore de pesquisa para determinar a melhor maneira de executar a query.

Internamente o SQL Server é organizado em camadas, sendo que cada uma possui vários componentes. Tanto o parser quanto o otimizador fazem parte de uma camada chamada “Query Processor” ou “Engine Relacional”.

No próximo post continuarei mais este assunto abordando as camadas internas do SQL, além de exemplos sobre como otimizar performance nas queries a partir dos conceitos fornecidos.



Deixe uma resposta

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s