• Viabilidade para reinicializar o MySQL automaticamente após o ajuste das variáveis, sem a interferência manual do usuário;
Solução: sugerir após as modificações finalizar o simulador e reinicializar o MySQL por linha de comando.
• Utilização de threads para as chamadas das cláusulas SQL com as linguagens utilizadas Solução: após estudos e a procura de diversas soluções para o uso de threads no PHP ou Javascript, chegou-se a conclusão que mesmo não estando no lado da linguagem esta técnica para a simulação de vários usuários, concorrendo com um mesmo banco de dados, optou-se em considerar a própria execução do MySQL que interpreta e divide as solicitações com cada uma sendo execuções paralelas. Isso tudo unido com a técnica/tecnologia do AJAX, facilitou e demonstrou os resultados desejados na forma dinâmica.
Ambos os riscos foram apresentados e de fato aconteceram no desenvolvimento da ferramenta. As soluções mapeadas foram utilizadas para a conclusão do projeto.
Figura 11. Tela de login do simulador.
Após a efetivação da conexão com o banco de dados, a tela inicial do simulador é apresentada, conforme Figura 12, com opções organizadas em um menu único e uma tela com informações iniciais do ambiente que está rodando, como usuário logado, versões do MySQL (servidor e cliente), bem como o local onde se encontra a estrutura física (localhost ou endereço IP), versão do Apache (servidor web) e da linguagem utilizada, o PHP.
Figura 12. Tela inicial.
O administrador inicia a execução da ferramenta selecionando, preferencialmente, a opção Simulador do menu. Esta opção leva ao início das seleções para opção e parâmetros do simulador.
Na primeira tela, conforme Figura 13, pode optar por iniciar um ambiente novo ou em uma base de dados existente no qual já passou por uma simulação.
Quando é selecionada a primeira opção, uma tela com os principais parâmetros é apresentada, como mostra a Figura 14, permitindo configurar a base nova de acordo com suas necessidades. O administrador deve informar nome da base de dados, prefixo e quantidade das tabelas, quantidade de colunas, quantidade de registros por tabela e a quantidade de instruções, que é internamente a quantidade de iterações utilizada no laço de execução.
Figura 13. Seleção para o tipo de simulação.
Figura 14. Seleção dos parâmetros para execução do simulador.
A segunda opção é a possibilidade de escolher por uma base de dados existente, com simulações já realizadas. Na primeira situação, quando já houve uma simulação, o simulador recria todo o ambiente conforme a primeira execução e executa sempre a mesma seqüência de instruções SQL com mesmos dados, conforme item 3.2 Após todas as parametrizações efetuadas, a Figura 15 é apresentada para garantir o instante para o início da simulação. Permite assim que o usuário possa voltar ao início das seleções para refazer os parâmetros.
Figura 15. Confirmação para início da simulação.
Com a confirmação para início da simulação, a próxima tela, demonstrada na Figura 16, é apresentada para informar ao administrador a criação do ambiente, ou seja, as tabelas, população dos dados, dos processos e tabelas auxiliares para a efetiva execução. Quando é iniciado um novo ambiente para a ferramenta, existe um tempo dedicado para definição das tabelas auxiliares, utilizadas para gravar as chamadas/funções SQL e os resultados obtidos das simulações. Isso é importante, pois a cada nova execução ocorre a redefinição dos parâmetros para execução de uma nova simulação que outrora já obteve resultados.
Figura 16. Tela com etapas do processo de criação do ambiente
Após todo o ambiente ser criado, o administrador clica no botão iniciar e a tela com as informações da simulação é apresentada conforme demonstrado na Figura 17. Esta tela está dividida em quatro partes distintas. A primeira, à esquerda na parte de cima, apresenta em uma textarea sempre a última instrução SQL executada. Estas instruções são geradas aleatoriamente e guardadas em uma tabela onde são sempre executadas quando existe a necessidade de se repetir uma nova simulação. Assim que o AJAX retorna com a conclusão o administrador visualiza seu retorno. No mesmo lado, mais abaixo, é apresentada uma tela com os processos do MySQL que estão ativos ou inativos atualmente.
Completando a tela da simulação, o usuário pode acompanhar as principais variáveis de configuração localizadas no lado direito e acima. A descrição de cada variável permite que após a conclusão da simulação seja visualizada sua função e possível orientação para ajuste do ambiente.
Figura 17. Tela de simulação.
Completando o término da simulação, o administrador tem a possibilidade de visualizar os tempos apurados em cada instrução executada. Além deste acesso, o sistema conta também com uma opção no menu, conforme Figura 18 para acesso ao relatório de resultados. Permite visualizar todos os bancos que passaram por uma simulação. A tela do relatório mostrado na Figura 19, mostra os processos concluídos, onde ao posicionar o ponteiro no número seqüencial a instrução SQL é apresentada; nas próximas colunas são apresentados os tempos de cada instrução por simulação para a avaliação geral da melhora ou não do desempenho.
Figura 18. Seleção para os resultados da simulação.
Figura 19. Relatório com as simulações da base de dados selecionada.
O administrador conta com a opção de visualizar e alterar as variáveis de configuração do MySQL. O sistema controla se cada variável que se deseja alterar pode ser no nível sessão ou global. Quando alterado em sessão, esta alteração ficará valendo apenas para a base de dados atual.
Quando ocorre globalmente, valerá a alteração para todas as bases e usuários ativos.
Figura 20. Visualização e Alteração das variáveis de configuração.
Conforme mostra a tela na Figura 20, existe um botão ao lado de cada variável apresentada, o que leva a abrir uma caixa para entrar com o novo valor correspondente a variável selecionada, como mostrado na Figura 21. No instante da alteração, os erros ou efetivações provenientes do tipo de alteração são mostrados para melhor entendimento do administrador.
Figura 21. Tela para alteração da variável de configuração do MySQL.
Além das alterações e visualizações das variáveis de configuração MySQL, a ferramenta também está preparada para permitir a visualização das variáveis de execução ou também conhecido, de status. Na Figura 22 é apresentado um exemplo em que todas as variáveis são visualizadas, porém nesta parte do sistema nenhuma ação é permitida para o usuário. Cabe a cada um analisar seus valores.
Também se pode ter acesso aos processos que estão em execução no servidor MySQL. A tela para os processos, no exemplo da Figura 23, deixa como condição a quem esteja usando a ferramenta, de matar o processo que previamente foi analisado e detectou-se que seu tempo de execução está elevado, decorrente de alguma cláusula SQL apresentando problemas.
Figura 22. Tela para visualização das variáveis de execução/status.
Figura 23. Tela para visualização dos processos, com opção de matar processo.