Por que eu devo ler este artigo:O artigo traz informações sobre a arquitetura do Microsoft SQL Server Database Engine. Ele discute, em linhas gerais, o seu funcionamento em duas etapas: fluxo de processo e de funcionamento. Também conheceremos uma das opções na criação de índices, a FILL FACTOR. Este artigo é importante no desenvolvimento de aplicações que irão utilizar a base de dados SQL Server, no entendimento de problemas de performance e na criação de cenários de alta disponibilidade. Auxilia também projetistas nas análises de funcionamento, buscando maior utilização de recursos do próprio SQL Server Database Engine a fim de trazer mais estabilidade, performance e robustez do software desenvolvido ou em desenvolvimento.
Autores: Henrique Ribeiro e Roger Gontijo Resende

Banco de dados, por definição, é um conjunto de arquivos relacionados entre si, com diferentes registros sobre diferentes assuntos. Porém, hoje em dia, os bancos de dados são muito mais que isso. No momento em que estamos, num mundo cada vez mais globalizado, ele se tornou vital para uma empresa funcionar e prosperar. A necessidade por informações o tempo todo se tornou habitual e quando algo ou alguém não consegue fornecer esse tipo de serviço, ele acaba ficando obsoleto e perdendo espaço.

Dentro do universo de banco de dados, temos inúmeras opções de Sistemas Gerenciadores de Bancos de Dados (SGBD) para atender diferentes casos e cenários, dos quais alguns se destacam no mercado. Neste artigo traremos informações e detalhes sobre o Microsoft SQL Server, mais precisamente sobre o módulo de Database Engine (funcionamento do banco de dados). O SQL Server foi criado em 1988 e vem evoluindo e desenvolvendo novas soluções para usuários finais, desenvolvedores e administradores. Hoje é um dos líderes de mercado e possui grande importância no cenário de banco de dados, facilitado pela sua grande integração com demais softwares Microsoft e de terceiros. Desde sua criação em 1988, já foram desenvolvidas 16 versões sólidas, sem contar algumas derivações com ferramentas e opções extras. A versão mais recente é o SQL Server 2016.

Podemos entender sua arquitetura considerando duas etapas: a primeira seria uma visão de fluxo e a segunda de funcionamento. Dentro dessas etapas temos mais subdivisões, e para o fluxo de processo temos:

  • Mecânica de fluxo relacional;
  • Mecânica de armazenamento;
  • SQL Server SO.

Já para o fluxo de funcionamento temos:

  • Arquitetura de log;
  • Arquitetura de dados;
  • Arquitetura de paginação e extensão;
  • Arquitetura de índices;
  • Arquitetura de memória.

A primeira etapa fornece uma visão geral do funcionamento do SQL Server, estando muitas vezes focada em parametrizações para um melhor funcionamento do software, além de definir locais de armazenamento dos diferentes arquivos (dados, log, binários). A segunda etapa provê detalhes mais ricos de como o SQL Server opera em uma camada transparente para usuários finais, além de ser importantíssimo aos desenvolvedores, administradores e projetistas de software. Saber como os arquivos de dados, memória, índices, arquivos de log e de paginação funcionam, auxilia na estruturação à nível de hardware, separação de discos, reservas de espaço e memória, identificação de lentidão de sistema, entre outras atividades.

O entendimento das duas etapas por completo culmina com a visão geral da arquitetura do SQL Server Database Engine e potencializa-nos a administrar e desenvolver melhor soluções que utilizam como base esse software. Obter o conhecimento da arquitetura de um software de apoio, como acaba sendo os softwares de banco de dados, é importantíssimo para as aplicações extraírem seu máximo potencial. Um banco de dados bem configurado acaba eliminando diversos problemas que seus aplicativos podem estar passando.

Etapa de Fluxo de Processo

Essa etapa compreende três itens: SQL OS, mecânica de fluxo e mecânica de armazenamento. Eles são compostos por blocos da etapa de funcionamento, que abordaremos na próxima seção.

SQL Server OS (Sistema Operacional SQL Server)

O SQL Server OS tem como objetivo fazer a comunicação entre o ambiente em que a Database Engine está instalada e o próprio banco de dados, sendo responsável por interpretar comandos em nível de sistema operacional, rede e processamento.

Uma das funções que ele desempenha é a reserva de memória para uso exclusivo do banco de dados, controle do nível de paralelismo e sua execução, mantendo sempre o banco de dados íntegro e trazendo o resultado esperado pelo usuário final. Além de controle de I/O (leitura e escrita), ele também realiza agendamentos de tarefas, controle de locks e sincronização com demais serviços do próprio SQL Server ou que possuem integração com o mesmo.

Mecânica de Fluxo

Mecânica de fluxo é por onde começa o processo de execução do comando informado pelo usuário. É nesta etapa que ocorre a comunicação com o client (software utilizado para realizar a comunicação com o banco de dados). O banco de dados recebe a instrução SQL do usuário no bloco CMD PARSE (analisador de comandos).

Nesta etapa do fluxo, primeiramente há uma verificação de sintaxe e collation (conjunto de caracteres aceito pelo banco de dados que é configurado no momento de instalação do software). Após a validação ter ocorrido com sucesso, é realizado um segundo processo, o qual desenvolve uma sequência de etapas a serem seguidas, similares a uma árvore de execução. Apenas após essas duas etapas do CMD PARSE é que o fluxo segue até o próximo bloco, o otimizador (optimizer).

O otimizador observa a estrutura gerada pelo CMD PARSE e realiza otimizações a fim de trazer o resultado da maneira mais rápida possível, utilizando índices e estatísticas da tabela como base. E, caso a consulta já tenha sido executada anteriormente, o mesmo economiza tempo com estes cálculos e reutiliza o plano gerado previamente. Com o plano de execução mon ...

Quer ler esse conteúdo completo? Tenha acesso completo