| (5 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 6: | Linha 6: | ||
= Conceito = | = Conceito = | ||
<br> | <br> | ||
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 = | = Banco de Dados = | ||
<br> | <br> | ||
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. | 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''' (linguagem para qual a ferramenta de tuning foi desenvolvida | 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. | 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. | 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. | 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, | 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). | 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). | ||
| Linha 22: | Linha 22: | ||
<br> | <br> | ||
As funções de um database | 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 = | = Importância do tuning = | ||
| Linha 30: | Linha 30: | ||
= Técnicas = | = Técnicas = | ||
<br> | <br> | ||
Utilizar | Utilizar de forma inteligente índices e suas clusterizações/não-clusterizações. | ||
Executar partes de uma query de maneira paralela. | Executar partes de uma query de maneira paralela. | ||
Propor e inserir métodos de pesquisa dinâmica. | Propor e inserir métodos de pesquisa dinâmica. | ||
| Linha 37: | Linha 37: | ||
= Exemplos = | = Exemplos = | ||
<br> | <br> | ||
SQL Tuning Advisor, disponível para SQL Server. | |||
= Referências bibliográficas = | = Referências bibliográficas = | ||
Edição atual tal como às 03h48min de 19 de abril de 2016
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