Teste de conexão e desempenho de bancos de dados MySQL

Este pequeno aplicativo tem o objetivo de fazer um simples teste de desempenho em banco de dados mysql.

O seu funcionamento limita-se a lista todas os nomes de todas as tabelas e/ou os campos desses tabelas, permitindo que você liste, ou o nome dessas tabelas/campos, ou a eunumeração dos mesmos (tabela1, tabela2, etc.. / campo1, campo2, etc), executando o teste quantas vezes julgar necessário e ao final obter o tempo (em segundos) que o aplicativo levou para executar a tarefa. Você pode ainda exibir ou enibir a listagem das tabelas e/ou campos.

É algo bem simples, mas creio que pode auxiliar os cliente a testarem de forma rápida a conexão e o desempenho do banco de dados MySQL, interna ou extermamente, em ambas plataformas.

Para fazer o teste, siga estas instruções:

Teste de conexão e desempenho de banco de dados mysql Crie os arquivos index.html e fazteste.php com o código que está no final da wiki e coloque-os na pasta chamada locaweb. #Código Fonte

Teste de conexão e desempenho de banco de dados mysql Coloque a pasta locaweb na respectiva hospedagem.

Teste de conexão e desempenho de banco de dados mysql Acesse o link onde está os arquivos. (ex: http://www.seudominio.com.br/locaweb).

Teste de conexão e desempenho de banco de dados mysql Aparecerá a seguinte tela:

Teste de conexão e desempenho de banco de dados mysql

Teste de conexão e desempenho de banco de dados mysql Nos campos servidor e usuário, você deve colocar o nome do servidor ou o ip e o login do banco de dado conforme a figura abaixo.

Teste de conexão e desempenho de banco de dados mysql

Teste de conexão e desempenho de banco de dados mysql Em “listar tabela” e “listar campos”, uma vez selecionados, será listado todas as tabelas e os seus respectivos campos, ambos de forma numerada (tabela1, campo1, campo2, … tabela2, campo1, campo2, …)

Teste de conexão e desempenho de banco de dados mysql

Teste de conexão e desempenho de banco de dados mysql Observe o resultado:

Teste de conexão e desempenho de banco de dados mysql

Teste de conexão e desempenho de banco de dados mysql Em “Nome verdadeiro”, você opta pela listagem dos nomes reais, tanto das tabelas como dos campos:

Teste de conexão e desempenho de banco de dados mysql

Teste de conexão e desempenho de banco de dados mysql Veja o resultado:

Teste de conexão e desempenho de banco de dados mysql

Teste de conexão e desempenho de banco de dados mysql Em “Número de Execuções do Teste” você define quantas vezes o teste será executado. Essa opção ajuda a ter um tempo mais mensurável, já que a execução de teste apenas uma vez, traz um valor de tempo muito pequeno.

Teste de conexão e desempenho de banco de dados mysql Ao final do teste é mostrado o tempo total que o script levou para ser executado em segundos.

Código do arquivo index.php

Código Fonte

index.php

<html>      <head>      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">           <title>[PHP] Teste de desempenho de banco de dados</title>           <style>           .x {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:smaller;}           .y {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:xx-small;}           </style>      </head>      <body>
          <script language="Javascript"> 
              function validaForm(){                       d = document.testemysql;                       //validar host                       if (d.host.value == ""){                                   alert("O campo " + d.host.name + " deve ser preenchido!");                                   d.host.focus();                                   return false;                         }                            //validar login                       if (d.login.value == ""){                                   alert("O campo " + d.login.name + " deve ser preenchido!");                                   d.login.focus();                                   return false;                         }                            //validar senha                       if (d.senha.value == ""){                                   alert("O campo " + d.host.senha + " deve ser preenchido!");                                   d.senha.focus();                                   return false;                         }                            //validar repetir                       if (d.repetir.value == ""){                                   alert("O campo Numero de Execuções de Teste deve ser preenchido!");                                   d.repetir.focus();                                   return false;                         }                    } 

</script>

          <h2>Teste simples de desempenho de banco de dados MySQL</h2>           <form class="x" name="testemysql" action="fazteste.php" method="post" onSubmit="return validaForm()">                <p class="x">Dados do servidor<br>                <table border="0">                     <tr>                          <td class="x">Servidor: </td>                          <td><input class="x" type="text" name="host" id="host"></td>                     </tr>                     <tr>                          <td class="x">Usuario: </td>                          <td><input class="x" type="text" name="login" id="login"></td>                     </tr>                     <tr>                          <td class="x">Senha: </td>                          <td><input class="x" type="password" name="senha" id="senha"></td>                     </tr>                     <tr>                          <td class="y">Lista Tabelas?: </td>                          <td><input class="x" type="checkbox" size="20" name="listaTabela" id="listaTabela"></td>                          <td class="y">Nome Verdadeiro?: </td>                          <td><input class="x" type="checkbox" name="nomeTabelaVerdadeiro" id="nomeTabelaVerdadeiro"></td>                     </tr>                     <tr>                          <td class="y">Lista Campos?: </td>                          <td><input class="x" type="checkbox" name="listaCampo" id="listaCampo"></td>                          <td class="y">Nome Verdadeiro?: </td>                          <td><input class="x" type="checkbox" name="nomeCampoVerdadeiro" id="nomeCampoVerdadeiro"></td>                     </tr>                     <tr>                          <td class="x">Numero de Execuções do Teste: </td>                          <td><input class="x" type="text" name="repetir" id="repetir"></td>                     </tr>                </table>                <div class="x">                     <input class="x" type="submit" value="enviar">                </div>           </form>      </body> </html>

fazteste.php

<?php   // Criamos a função que fará os cálculos atravéz do comando microtime() do PHP $tempo = null; function execucao(){      $sec = explode(" ",microtime());     $tempo = $sec[1] + $sec[0];     return $tempo;    }   // No inicio da página executamos a função para iniciar o calculo, gerando a variavel $inicio $inicio = execucao();        //echo "hora de inicio: ".$Time->TempoInicialParcial;        $host = $_POST["host"];      $login = $_POST["login"];      $senha = $_POST["senha"];        if(isset($_POST["listaTabela"])) {                $listaTabela =1;           }  else  {                $listaTabela = 0;           }        if(isset($_POST["nomeTabelaVerdadeiro"])) {                $nomeTabelaVerdadeiro =1;           }  else  {                $nomeTabelaVerdadeiro = 0;           }        if(isset($_POST["listaCampo"])) {                $listaCampo =1;           }  else  {                $listaCampo = 0;           }        if(isset($_POST["nomeCampoVerdadeiro"])) {                $nomeCampoVerdadeiro =1;           }  else  {                $nomeCampoVerdadeiro = 0;           }                  $repetir = $_POST["repetir"];          $repeticao = 0;     while ($repeticao < $repetir) {           $link = null;           $result = null;           $tabelas = null;           $result1 = null;           $row = null;             $link = mysql_connect($host, $login, $senha)or die("Falha ao se conectar ao banco. Verifique se os dados de conexão estão corretos.");;            if (!$link) {                echo 'Nao foi possivel conectar: '. mysql_error() . '<br>';                exit;           } else {                echo 'Conectado ao banco '. $login. ' no servidor '.$host. ' <br>';           }             $dbname = $login;           mysql_select_db($dbname, $link);             $sql = "SHOW TABLES FROM $dbname";           $result = mysql_query($sql);             if (!$result) {                echo "DB Error, could not list tables/n";                echo 'MySQL Error: ' . mysql_error();                exit;           }  /*else {                echo 'tabela - consulta realizada com sucesso <br><br>';           } */             $contar = 0;           while ($tabelas = mysql_fetch_row($result)) {                //echo "Tabela: {$tabelas[0]}/n <br>";                $contar++;                if ($listaTabela == 1) {                     if ($nomeTabelaVerdadeiro == 0) {                          echo "Tabela: ".$contar."<br>";                          } else {                          echo "Tabela: {$tabelas[0]} <br>";                          }                }                  $result1 = mysql_query('SHOW COLUMNS FROM `'.$tabelas[0].'`');                 if (mysql_num_rows($result1) > 0) {                     $contar1 = 0;                           while ($row = mysql_fetch_assoc($result1)) {                                //print '<span>'.$row['Field'].'</span><br />';                                $contar1++;                          if ($listaCampo == 1) {                               if ($nomeCampoVerdadeiro == 0) {                                    print '<span>Campo: '.$contar1.'</span><br />';                                } else {                                    print '<span>'.$row['Field'].'</span><br />';                               }                          }                     }                if ($listaTabela || $listaCampo) {                     echo "<br>";                      }                }            }           mysql_close($link);           $repeticao++;           echo "execução numero: ". $repeticao;           echo "<br>";      }       // Após a execução da página, geramos a variavel $fim, que nos dará o tempo final da execução da página $fim = execucao();   // Agora é só fazermos a subtração de um pelo outro, e usar o number_format() do PHP para formatar com 6 casas depois da virgula e pronto, mas caso você queira alterar esse número de casas depois da vírgula para mais ou menos, fique a vontade $tempo = number_format(($fim-$inicio),6);   // Agora á só imprimir o resultado print "Tempo de Execução: <b>".$tempo."</b> segundos";   ?>

Veja também


Listando todas as variáveis do MySQL

Com a query abaixo você consegue visualizar, por exemplo, quantas conexões seu usuário pode fazer (max_user_connection) e qual o tamanho máximo de um arquivo (casos de campos do tipo BLOB) a ser enviado (max_allowed_packet).


 SHOW VARIABLES;

É possível filtrar os nomes das variáveis também, por exemplo:


 SHOW VARIABLES LIKE '%connection%';

    Alterando valores de uma variável

    Em alguns casos é possível que se altere o valor de uma variável, mas a alteração será válida somente para a sessão (conexão) atual. Quando você abrir uma outra conexão ou desconectar e conectar novamente, a nova conexão sempre carregará os valores padrões.

    Sintaxe da query de alteração:


     SET nome_da_variavel = novo_valor;

    Exemplo:


     SET table_type = InnoDB;

    • Este exemplo altera o padrão das tabelas a serem criadas de MyISAM (padrão Locaweb) para InnoDB.

    Para saber se uma variável pode ser alterada, ou se ela foi alterada (baseada no exemplo acima), rode:


     -- Veja primeiro o valor atual da variável.  SHOW VARIABLES LIKE 'table_type';    -- Altere para o valor desejado.  SET table_type = InnoDB;    -- E veja novamente o valor da variável.  SHOW VARIABLES LIKE 'table_type';

    • Não são todas as variáveis que podem ser alteradas, as que exigem um SET GLOBAL somente o usuário ‘root’ ou outro com mais privilégios terá condições de alterá-la.
    • A Locaweb não altera o valor das variáveis globais no servidor (as que exigem SET GLOBAL), pois impactará diretamente nas outras bases que estão sob o mesmo servidor

    Para verificar quais variáveis são de sessão acesse:

    http://docs.oracle.com/cd/E17952_01/refman-5.1-en/mysqld-option-tables.html

    Visualizando as conexões ativas

    A query que fará você visualizar as conexões do seu usuário ativas será


     SHOW PROCESSLIST;

    Ela retornará valores como PID (número do processo da conexão), a quantidade de conexões do seu usuário à base, a query que a conexão está rodando no momento ou se ela está ociosa (sleep).

    Derrubando conexões e processos presos

    Caso se depare com problemas de conexão presa, ou seu usuário esteja usando todas as conexões disponíveis para ele, a query abaixo derrubará a conexão que você escolher:

    Sintaxe:


     KILL <numero_PID>;

    • O PID você obtém rodando SHOW PROCESSLIST (exemplo do tópico anterior).

    Exemplo:


     KILL 2552;

    Veja também


    Esse artigo ajudou você?

    42 respostas para “Teste de conexão e desempenho de banco de dados mysql”

    1. Seth YouTube

      I really loved this blog post. You are an awesome blogger. I’ll be back to see another! Thanks!

      Responder
    2. Raphael Pease

      Thanks for every other excellent post. The place else may just anyone get that kind of info in such an ideal manner of writing? I’ve a presentation subsequent week, and I am at the look for such information.Gregoria Rosner

      Responder
    3. smartboard

      Magnificent goods from you, man. I’ve understand your stuff previous to and you are just too fantastic. I actually like what you’ve acquired here, certainly like what you are stating and the way in which you say it. You make it entertaining and you still take care of to keep it wise. I can not wait to read far more from you. This is really a great website.

      Responder
    4. Skincell Pro Review

      I need to to thank you for this fantastic read!! I certainly loved every little bit of it. I have you book-marked to look at new stuff you post…

      Responder
    5. Blackberry Kush Feminized Cannabis Seeds

      An intriguing discussion is worth comment. I think that you should publish more on this subject matter, it may not be a taboo subject but usually people don’t talk about these subjects. To the next! Many thanks!

      Responder
    6. free horror

      I love it when people come together and share ideas. Great blog, stick with it!

      Responder
    7. Pablo Granstrom

      Having read this I believed it was really informative. I appreciate you finding the time and effort to put Pilih Bandar Judi Togel this short article together. I once again find myself spending a lot of time both reading and leaving comments

      Responder
    8. Affiliate Marketing Training

      Terriffic article! I’ll return to see your next piece! Thank you!

      Responder
    9. jewelry

      Good info. Lucky me I recently found your site by chance (stumbleupon). I’ve book marked it for later.

      Responder
    10. Samual Pluhar

      Hi there! This post could not be written any better! Reading through this post reminds me of my previous room mate! He always kept talking about this. I will forward this article to him. Pretty sure he will have a good read. Thank you for sharing!

      Responder
    11. Ira Alcini

      The the next occasion I just read a blog, Lets hope so it doesnt disappoint me about this one. Get real, It was my solution to read, but I personally thought youd have some thing intriguing to say. All I hear is often a bunch of whining about something that you could fix in case you werent too busy searching for attention.

      Responder
    12. Pest Control Mike

      If you are searching for the ultimate pest control company, look no further. These guys dominate!

      Responder
    13. Pretty Gaming

      Howdy, I do believe your website could be having browser compatibility issues. Whenever I take a look at your web site in Safari, it looks fine however when opening in Internet Explorer, it’s got some overlapping issues. I just wanted to give you a quick heads up! Besides that, excellent website.

      Responder
    14. Elissa Reinschmidt

      This is really interesting, You’re a very skilled blogger. I have joined your feed and look forward to seeking more of your magnificent post. Also, I have shared your web site in my social networks!

      Responder
    15. Final mile delivery

      Hey, you used to write great, but the last few posts have been kinda boring¡K I miss your super writings. Past few posts are just a bit out of track! come on!

      Responder
    16. Scottie Gondola

      Thanks so much the information. I love sucking dick btw hmu

      Responder
    17. Mallie Goerdel

      Have you already setup a fan page on Facebook ?`*”-:

      Responder
    18. 슬롯

      Best view i have ever seen !

      Responder
    19. Morgan Sixon

      Thanks for some other excellent article. Where else could anyone get that kind of information in such a perfect way of writing? I’ve a presentation next week, and I am at the look for such info.

      Responder
    20. Renthal Spares for sale

      I dugg some of you post as I thought they were very beneficial very useful

      Responder
    21. 스포츠 북

      Best view i have ever seen !

      Responder
    22. Kryptonite Zubehör zu verkaufen

      Along with every little thing that appears to be developing inside this subject matter, all your opinions happen to be rather refreshing. Nevertheless, I appologize, because I do not give credence to your entire idea, all be it refreshing none the less. It appears to us that your opinions are not completely rationalized and in simple fact you are generally your self not entirely convinced of the assertion. In any case I did appreciate reading through it.

      Responder
    23. Mymedicar Gov

      Hello, I enjoy reading all of your article. I like to write a little comment to support you.

      Responder
    24. pier and beam foundation repair near me

      I like what you guys are up also. Such clever work and reporting! Carry on the superb works guys I have incorporated you guys to my blogroll. I think it will improve the value of my site 🙂

      Responder
    25. emergency plumber near me my explanation

      I’d need to check with you here. Which is not something I normally do! I enjoy studying a submit that can make people think. Additionally, thanks for permitting me to comment!

      Responder
    26. donating used cars to charity

      Greetings! Very helpful advice in this particular article!

      It’s the little chajges thast make tthe most important changes.
      Many thank for sharing!

      Responder
    27. click here for more

      I just want to tell you that I’m very new to weblog and seriously savored your web page. Most likely I’m likely to bookmark your site . You amazingly come with great well written articles. Many thanks for revealing your blog site.

      Responder
    28. emergency plumber near me check

      I haven’t checked in here for a while since I thought it was getting boring, but the last few posts are good quality so I guess I’ll add you back to my everyday bloglist. You deserve it my friend 🙂

      Responder
    29. VitalFlow reviews

      Aw, this was a really nice post. Finding the time and actual effort to create a superb article… but what can I say… I put things off a lot and don’t manage to get anything done.

      Responder
    30. home warranty coverage

      Hello to every one, since I am genuinely keen of
      reading thhis website’s post to be updated regularly.
      It carries nice data.

      Responder
    31. 마사지알바

      Your blog is great as in the event that it ended up written by simply a writer. I will take a look at your blog often. Many thanks always.

      Responder
    32. Swing set installers

      Absolutely pent subject matter, Really enjoyed examining.

      Responder
    33. porno

      You could definitely see your skills in the work you write. The world hopes for more passionate writers like you who are not afraid to say how they believe. Always go after your heart.

      Responder
    34. small house remodel

      After examine a couple of of the blog posts in your website now, and I actually like your method of blogging. I bookmarked it to my bookmark website listing and might be checking again soon. Pls take a look at my web page as well and let me know what you think.

      Responder
    35. digital marketing level 8

      It’s really a nice and useful piece of info. I am happy that you simply shared this useful information with us. Please keep us up to date like this. Thanks for sharing.

      Responder
    36. visit this site

      You completed various nice points there. I did a search on the subject matter and found a good number of persons will agree with your blog.

      Responder
    37. hop over to this web-site

      I simply want to mention I am just very new to blogging and site-building and seriously loved this blog site. Likely I’m going to bookmark your site . You really have tremendous writings. Cheers for sharing with us your blog site.

      Responder
    38. the original source

      Greetings from Florida! I’m bored to tears at work so I decided to browse your blog on my iphone during lunch break. I love the knowledge you present here and can’t wait to take a look when I get home. I’m surprised at how fast your blog loaded on my phone .. I’m not even using WIFI, just 3G .. Anyways, wonderful blog!

      Responder
    39. Thad Setera

      I simply want to say I’m all new to blogging and absolutely loved you’re web blog. More than likely I’m want to bookmark your blog post . You actually come with superb writings. Thanks a bunch for revealing your blog site.

      Responder

    Comente sobre este conteúdo! Escreva o que pensa, complemente, vamos discutir. O conhecimento é livre!