• Nenhum resultado encontrado

ANÁLISE E AJUSTE DE DESEMPENHO DO MYSQL

Como foi visto na Seção 2.1, para se obter um bom resultado no ajuste de um SGBD deve-se primeiramente realizar uma boa avaliação e análise, detectando os gargalos e definir estratégias, para efetuar os ajustes quando necessário.

Em um ambiente de banco de dados, tem-se 03 (três) níveis que devem ser analisados de forma independente ou em conjunto, tornando o ajuste no banco de dados mais refinado. Este projeto visa desenvolver a ferramenta de simulação para análise e orientação no ajuste de desempenho focado no segundo nível, que envolve o ajuste dos parâmetros de configuração, sendo neste caso, da ferramenta de armazenagem InnoDB, distribuída com o MySQL. Completando este nível de ajuste, temos também o ajuste de ambiente de hardware e sistema operacional e o ajuste na aplicação.

2.3.1 Configuração de Parâmetros

Inicialmente, deve-se conhecer a forma como a configuração do MySQL Server é iniciada na sua carga. No diretório raiz da instalação existe o arquivo my.cnf que é utilizado para incluir ou alterar as configurações utilizadas na carga do sistema. Este arquivo contém variáveis de ambiente com valores de inicialização, que podem ser alterados conforme dimensionamento do ambiente em que o MySQL Server se encontra instalado.

O MySQL fornece no mesmo diretório, 05 (cinco) arquivos modelo de configuração, que podem ser renomeados para my.cnf, conforme a disponibilidade de memória da máquina. São eles (LIMA, 2003):

• My-innodb-heavy-4G.cnf : para uso com tabelas InnoDB em sistemas com 4 GB de memória ou mais;

• My-huge.cnf : para sistemas com 1GB de memória ou mais;

• My-large.cnf : para sistemas na faixa de 512 MB de memória;

• My-medium.cnf : para sistemas entre 64 e 128 MB de memória; e

• My-small.cnf : para sistemas com até 64 MB de memória.

Estes arquivos com configurações já pré-definidas foram projetados para serem distribuídos na instalação do SGBD, tornando o trabalho de configuração o mais simples possível, mesmo que não haja maiores dificuldades para isso, é somente um facilitador.

Na Figura 2 é mostrado um exemplo do arquivo de configuração do MySQL.

Figura 2. my.cnf: arquivo de configuração do MySQL

2.3.2 Instruções SQL

Algumas instruções SQL no MySQL Server servem para extrair informações de configuração e estado de sua execução.

2.3.2.1 Instrução SHOW STATUS

A instrução SHOW STATUS fornece informações de status do servidor MySQL. Pode ser executada em um aplicativo para administração do banco e que permita execuções de comandos SQL, como por exemplo, o MySQL Query ou simplesmente com a interface de modo texto do aplicativo mysql.exe, localizado no diretório \mysql\bin, utilizado para interação com o servidor MySQL (MYSQL, 2011).

Na Tabela 5 dos anexos existe a listagem completa das variáveis de status e uma breve descrição de seu significado. Algumas variáveis permitem análises de seus valores, confrontando-as com as variáveis de configuração do servidor MySQL, e portando, novos ajustes poderão ser efetuados pelo administrador do banco de dados.

2.3.2.2 Instrução SHOW VARIABLES

A instrução SHOW VARIABLES extrai informações das variáveis de configuração do MySQL Server. Estas variáveis estão, de alguma forma, relacionadas com as de status, pois dependendo de seus valores, será necessário alguma alteração na configuração do MySQL.

Segue alguns exemplos de variáveis de sistema (MySQL, 2011) com algumas sugestões de ajustes:

• Tmp_table_size : se uma tabela temporária em memória exceder este tamanho, o MySQL irá convertê-la automaticamente para uma tabela MyISAM. Sugere-se aumentar o valor de tmp_table_size caso seja realizada várias consultas GROUP BY avançadas e tiver muita memória;

• Thread_cache_size: quantas threads devem ser mantidas em cache para reutilização.

Quando um cliente desconecta, as threads dos clientes são colocadas na cache se não existir mais de thread_cache_size threads que antes. Todas novas threads serão obtidas primeiramente do cache, e só quando o cache estiver vazio uma nova thread é criada.

Esta variável pode ser aumentada para melhorar o desempenho se você tiver várias conexões novas;

• Sort_buffer : cada thread que precisar fazer uma ordenação aloca um buffer deste tamanho. Sugere-se aumentar este valor para operações ORDER BY ou GROUP BY

tornando mais rápidas;

• Slow_launch_time : se a criação de threads demorar mais que este valor (em segundos), o contador Slow_launch_threads será incrementado;

• Query_alloc_block_size : tamanho dos blocos de alocação de memória que são alocados para objetos criados durante a análise e execução da consulta. Se houver problemas com fragmentação de memória pode ajudar o incremento desta configuração;

• Read_rnd_buffer_ae : ao ler registros na ordem depois de uma ordenação, os registros são lidos através deste buffer para evitar pesquisas em disco. Pode melhorar bastante o ORDER BY se configurado com um valor alto. Como esta é uma variável específica da thread, não se pode defini-la globalmente, mas apenas alterá-la ao executar alguma consulta específica grande; e

• Read_buffer_size : cada thread que faz uma leitura seqüencial aloca um buffer deste tamanho para cada tabela lida. Se houver várias leituras seqüenciais, este valor pode ser aumentado.

Independente do tamanho de memória dimensionada para execução em um ambiente, o MySQL “não sabe” quanto o computador possui. A configuração que o MySQL deve usar de memória faz parte dos procedimentos de ajuste de desempenho (LIMA, 2003).

Na Seção 2.3.1 deste trabalho foi visto a forma como o MySQL configura os parâmetros de carga e os arquivos de configuração pré-definidos dependendo da memória dimensionada no servidor. Independente do arquivo modelo utilizado, será necessário adaptá-lo às particularidades de cada computador, além de disco e memória, também a quantidade de clientes que podem acessá-lo.

O MySQL utiliza buffers e caches para acesso à arquivos em disco e que podem ser compartilhados por outros processos (processos globais), ou também alocado para um processo específico e fechado logo após sua conclusão. Pode-se definir cache como um local utilizado para armazenagem de dados num curto espaço de tempo e buffer como uma área temporária para armazenamento de dados em memória, aumentando a velocidade de operações de entrada e/ou saída, reduzindo acesso a disco (LIMA 2003).

Documentos relacionados