Tuning - Banco de Dados

Revisão de 03h48min de 19 de abril de 2016 por 11611BSI222 (discussão | contribs) (Conceito)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Esta pesquisa deve fornecer um conteúdo atualizado sobre o tema acima. Não esqueça de incluir as  
referëncias (fontes) no último item, reforçando que não deve ser um Copy/Paste e sim uma síntese 
das pesquisas que fizer.


Conceito


A prática do Tuning há muito vêm sendo feita manualmente ou via ferramentas incapazes de realizar uma análise verdadeiramente completa e metódica do sistema de entrada. Com o auxílio de Python, desenvolveremos uma ferramenta poderosa e que rode por si só, sem necessidade de debugs ou instalações de packages/libraries situacionais.

Banco de Dados


Um banco de dados pode ser definido como um conjunto de arquivos/informações armazenados de forma que haja uma relação lógica entre eles. Sua aplicação é muito vasta, visto que para quaquer médio ou grande sistema surgirá a necessidade de armazenar de forma automatizada, dinâmica e segura seus dados. Existem 4 modelos de bancos de dados: planos, em rede, hierárquicos e relacionais. No entanto, trataremos apenas a respeito dos BDs relacionais, por basearem-se na SQL (Structured Query Language), linguagem para a qual a ferramenta de tuning foi desenvolvida

O modelo relacional designa o conceito criado por Edgar Frank Codd, baseado em relações matemáticas (álgebra relacional, teoria dos conjuntos etc),o qual tornou-se um padrão para aplicações comerciais devido a sua simplicidade e performance. O banco de dados que utiliza o modelo relacional dispõe seus dados em forma de coleções de tabelas. Tais tabelas são organizadas em colunas, em que cada coluna armazena um determinado tipo de dados (números reais, chars, strings etc). O acesso a uma determinada tabela é facilitado e agilizado através do uso de índices. Existem dois tipos de índices: clusterizados e não-clusterizados. Para que possamos entendê-los, é necessário que antes entendamos o que é uma clusterização. Nada mais é do que uma técnica de mineração de dados que agrupa os dados com base em seu grau de semelhança, enlaçando os com um algoritmo projetado em cima da estatística específica dos dados sistemáticos. Agora, índices clusterizados (ic) são utilizados para armazenar as linhas de dados da tabela respeitando seus valores de chave. Tais colunas são inclusas na própria definição do índice. Logo, é possível que exista apenas um índice clusterizado por tabela uma vez que as linhas de dados devem ser organizadas em somente uma única ordem. Já os indices não-clusterizados (in-c) apresentam uma estrutura distinta no que se refere às linhas de dados. Contém valores de chave de in-c e para cada input de valor de chave existe um ponteiro (funciona como um "localizador de linhas") para a linha de dados que contém tal valor de chave. Ambos têm seus prós e contras, e o emprego de um deles é elegido perante o consumo de disco/dados, tempo de resposta bem como as necessidades do desenvolvedor. Devido ao grande impacto da organização dos índices na performance geral do sistema, estão disponíveis várias ferramentas responsáveis pelo auxílio na seleção de índices apropriados, como o Orientador de Otimização do Mecanismo de Banco de Dados (SQL Server).

Funções de um DBA


As funções de um database administrator são de gerenciar e promover melhorias na performance e segurança de um determinado BD/SGBD. O DBA deverá tratar: do ambiente do BD (hardware, software, infraestrutura de rede), dos parâmetros e configurações do BD bem como da otimização de instruções SQL via uma estruturação mais concisa de seus índices, colunas, linhas, ponteiros etc..

Importância do tuning


A importância do tuning se dá quando há a necessidade de reduzir o tempo de resposta para os usuários do sistema ou reduzir o número de recursos utilizados pelo sgbd para execução de uma certa tarefa.

Técnicas


Utilizar de forma inteligente índices e suas clusterizações/não-clusterizações. Executar partes de uma query de maneira paralela. Propor e inserir métodos de pesquisa dinâmica. Reduzir consumo de disco/dados.

Exemplos


SQL Tuning Advisor, disponível para SQL Server.

Referências bibliográficas


Bancos de Dados - Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. - Introduction to Database Systems. Date, C. J. 7th ed. 1999. - https://msdn.microsoft.com/pt-br/library/ms190457(v=sql.120).aspx - https://msdn.microsoft.com/pt-br/library/hh231122(v=sql.120).aspx - https://www.youtube.com/watch?v=M0kQzhpxli8 - https://pt.wikipedia.org/wiki/Clustering - https://pt.wikipedia.org/wiki/Minera%C3%A7%C3%A3o_de_dados