Tutorial de Tuning em PL/SQL
Tags: programming, beginners, tutorial
Published: 2023-12-07 20:40:14

**Introdução**

Como já foi apontado no artigo anterior o Tuning é um conjunto de ações que o desenvolvedor pode fazer para melhorar o desempenho do seu banco de dados sendo elas ações dentro do código do banco ou ações por fora na parte de hardware mexendo com peças e etc.
Nesse Tutorial será mostrando como podemos executar corretamente as praticas de Tunning dentro do código do banco de dados, serão mostrados cenário onde existe um "problema" e a explicação do método utilizado para resolver acompanhado por um imagem do mesmo.

**1. Índices.**
Os índices são uma pratica comum em BD para facilitar a leitura de dados, deixando ela mais rápida. Ele funciona como se fosse um índice de um livro.

**Cenário**
Existe uma tabela muito grande com muitos dados e você deseja acelerar a consulta de dados que utilizam um filtro especifico como, por exemplo, o nome.

**Prática**
Ao criar o index você deve primeiro escrever o nome que será exibido, em qual tabela ele será exibido e por fim entre parênteses sobre qual coluna ele se refere.

**Imagem:**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fkm5en5ws3ldu47c7bbh.png)


**2. Blocos Anônimos**
Os blocos anônimos são pedaços de código que não tem um nome atribuído e são utilizados para executar instruções temporárias.

**Cenário**
Você precisa esta desenvolvendo ou testando um pedaço do código em que seja necessário a criação de procedimentos formais.

**Prática**
Ao criar um código em um bloco anônimo primeiro você deve declara o começo dele usando o "BEGIN" e o final do bloco usando o "END" e será entre eles que você escrevera o seu código temporário.

**Imagem:**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4hxa60mw2bu9y1e5s2k.png)


**3. Cláusulas LIMIT e OFFSET**
As Cláusulas LIMIT e OFFSET são usadas geralmente para controlar a quantidade de registros que serão retornados e mostrar a posição inicial dos resultados em ordem.

**Cenário**
Você precisa exibir os dados de uma tabela extensa e precisa fazer com que esses resultado sejam exibidos de uma forma confortável para o usuário.

**Prática**
Combinando o LIMIT e o OFFSET você pode montar uma busca customizada para que sejam exibidas apenas algumas informações ao invés de um numero excessivo de coisas. Primeiro selecionando a coluna depois a tabela, seguido pelo limite de linhas exibidas e por ultimo a posição inicial de onde a exibição será iniciada.

**Imagem:**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vlhucpahz211w402pss5.png)


**4. Paralelismo**
O paralelismo é referente a executar tarefas ou processos simultaneamente, assim dividindo a carga desse trabalho em menores partes para serem executadas em paralelo.

**Cenário**
Existe uma consulta a ser feita porem ela é uma consulta demorada e é possível  que sejam utilizados vários processadores para acelerar essa execução.

**Prática**
Ao selecionar as colunas para fazer a consulta você pode usar uma dica de otimizador para apontar que a consulta pode ser feita em paralelo e em quantas partes ela pode ser dividida

**Imagem:**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6o79ndoywtlyhvnzg3fx.png)


**5. Perfil de rastreamento**
O trace profiling ou Perfil de rastreamento é uma técnica usada para fazer a analise de desempenho e do comportamento do programa ou do sistema que está sendo executado. Esse procedimento é baseado em coletar dados com detalhes para identificar possíveis problemas de desempenho.

**Cenário**
Você ao perceber que em alguns ponto do código a sua maquina parece executa-los de forma mais lenta ou atrasada você pode usar o perfil de rastreamento para identificar se existe algum problema com o sistema.

**Prática**
O perfil de rastreamento ira mostrar de maneira exata onde o código está gastando mais tempo por meio de um mapa das partes do mesmo

**Imagem:**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hsf4d7qhhwo5905lnevj.png)



**GRUPO**
Luiz Henrique Almeida da Silva - 191192
Lucca Alves Santos - 190647
Mathes Henrique Lopes Rodrigues - 190922