BLOG

SQL Performance 4 — Views


Continuando a saga de conteúdos relacionados a tuning, neste artigo, irei abordar sobre o tema Views de banco de dados, descreverei o por que devemos utiliza-las, quando utiliza-las e qual a melhor forma de utiliza-los. Para isso, irei considerar que você:

  • Já leu meu primeiro e o segundo artigo da série sobre performance que eu escrevi.
  • Tenha conhecimento básico sobre o conceito de tabelas e views em Banco de Dados

O que é uma View?

Imagine que você trabalha em uma sala, e no fundo dessa sala tem um armário que contém todo o material que você necessita para executar seu trabalho diário e todo momento que você precisa utilizar algum material você levanta de sua mesa, caminha até o fundo dessa sala, abre o armário e pega o material e em seguida volta pra sua mesa para trabalhar, conseguiu? Agora reflita, seria viável executar esse esforço a todo momento? Não seria mais pratico deixar os materiais que mais utilizamos na mesa ou mais próximo possível de nós? Esse é o conceito básico de cachear informações em sistemas e a View de banco de dados é um dos recursos que podemos utilizar para isso.

Por que isso é tão viável?

Simplesmente, pelo fato que o toda informação disponível em uma View fica alocada na memória RAM, enquanto a informação de uma tabela no banco de dados fica sempre disponível no HD. Segundo a hierarquia de memórias da organização computacional, a memória RAM está em terceiro lugar em velocidade de acesso e entrega de informação, por isso que um SELECT em uma TABLE demora muito mais do que numa VIEW, a tabela fica em disco, enquanto a VIEW fica em memória.

Quais as vantagens de uma View na prática ?

As Views são apenas objetos de visualização, ou seja, uma representação da tabela onde contém os dados e podemos utilizar para as seguintes finalidades:

  • Processos estáticos que não exigem atualização constantes como relatórios
  • Apresentar os dados da tabela de forma simplificada, evitando a busca de campos que não são necessários
  • Limitar a quantidade de dados exibidos através de filtros
  • Disponibilização de dados que são constantemente acessados como logins ou tokens na memória RAM
  • Facilitar o entendimento e diminuem a complexidade das informações

Limitações

  • Não pode conter ORDER BY, por que tem que ser parecido com a tabela
  • Não se pode inserir dados em Views
  • Views não podem referenciar tabelas temporárias, apenas permanentes

Como crio minha primeira View ?

A sintaxe para a criação de uma View, utilizando SQL Standard segue o seguinte padrão

CREATE VIEW vw_test AS SELECT * FROM table;

SELECT * FROM vw_test

Posso colocar várias Views no meu banco de dados?

Depende e muito! Como citei acima, RAMs são recursos rápidos e consequentemente muito caros quando estamos falando de computação Cloud. Por esse motivo, devemos utilizar esse recurso com muita cautela, pois toda View é um comando de SELECT que é carregado previamente na memória RAM no banco de dados no momento que é inciado, mesmo que você não utilize essa View, então o que poderia ser uma solução poderá acabar se transformando em um problema, tanto para o consumo da memória do seu servidor e quanto para o seu bolso no final do mês.

Qual é a melhor forma então de medir o tamanho da minha View ?

Uma das dicas que eu sempre recomendo e também utilizo no meu dia-a-dia é o uso constante do recurso EXPLAIN, como eu expliquei neste artigo as Views são comandos carregados na RAM, usando o EXPLAIN assim você terá uma noção clara do esforço que seu banco irá executar para recuperar os dados, assim você consegue estimar se as VIEWS que você criará exigirá muito espaço em disco.

Nesta caso, vimos que essa query retorna um total de 9.92Gigas de linhas de informação

Conclusão, View é um bom recurso ?

A resposta mais ideal é DEPENDE e muito! Em alguns cenários, algumas soluções demandarão outros recursos como o Redis e até mesmo o MongoDB, por isso o mais ideal é aprofundar sempre no problema e em todas as possíveis soluções disponíveis, efetuar todos os testes possíveis, comparar os dados desses testes e então decidirmos por uma solução que cause menos impactos ao nosso sistema.


Tem interesse em aprender mais sobre? Entre em contato conosco ❤️!

Toolbox Devops Consultoria

Toolbox Devops Consultoria

Simplicando seu dia-a-dia na cloud

Esta gostando do conteúdo ? Compartilhe!