Usando o SQL_CACHE para melhorar a performance do MySQL
Estive pesquisando sobre como usar menos carga em minhas queries. Administro um portal de buscas - http://www.netmultibusca.com.br - e nesse portal, o número de acessos diários é grande - cerca de 50.000 mais ou menos. E como usamos muitas queries durante as navegações, o servidor tava sobrecarregando - aliás, caiu 2x ( na locaweb ).
Foi na segunda vez que eles me informaram sobre o SQL_CACHE. É muito simples o uso, e ajuda bastante no resultado final.
Por exemplo:
Neste caso, de forma geral, sempre iremos retornar o mesmo resultado. Podemos usar o SQL_CACHE nele:
Com essa query, o MySQL irá guardar o resultado da primeira consulta em CACHE, e na próxima consulta, ao invés de pesquisar dentro das tabelas pelos registros solicitados, ele irá usar o resultado gravado na memoria do servidor. Com isso, o retorno da consulta é mais rápido também.
Ou seja ( cerveja ) ... ehe - ele vai usar uma carga bem menor, visto que não precisa gerar o resultado novamente, pois ja o tem em cache. Você pode pensar: "ah, mas meu site tem pouco acesso, não preciso disso". Bem, mesmo assim eu sugiro o uso do cache, pois quanto menos carga você usar do mysql, mais ágil será seu sistema e suas consultas.
Dei acima o exemplo de uma consulta por ID, mas é possivel usar em todas as suas consultas MySQL. Tipo, no while:
Mesma coisa: o MySQL guarda em cache e se a mesma consulta for efetuada, ele usa o cache e tudo fica melhor - mais rápido e com menos recursos do servidor.
André Sam!
http://www.netmultibusca.com.br
Foi na segunda vez que eles me informaram sobre o SQL_CACHE. É muito simples o uso, e ajuda bastante no resultado final.
Por exemplo:
<?php mysql_query("SELECT * FROM tabela WHERE id = '$_GET[id]'"); ?>
Neste caso, de forma geral, sempre iremos retornar o mesmo resultado. Podemos usar o SQL_CACHE nele:
<?php mysql_query("SELECT SQL_CACHE * FROM tabela WHERE id = '$_GET[id]'"); ?>
Com essa query, o MySQL irá guardar o resultado da primeira consulta em CACHE, e na próxima consulta, ao invés de pesquisar dentro das tabelas pelos registros solicitados, ele irá usar o resultado gravado na memoria do servidor. Com isso, o retorno da consulta é mais rápido também.
Ou seja ( cerveja ) ... ehe - ele vai usar uma carga bem menor, visto que não precisa gerar o resultado novamente, pois ja o tem em cache. Você pode pensar: "ah, mas meu site tem pouco acesso, não preciso disso". Bem, mesmo assim eu sugiro o uso do cache, pois quanto menos carga você usar do mysql, mais ágil será seu sistema e suas consultas.
Dei acima o exemplo de uma consulta por ID, mas é possivel usar em todas as suas consultas MySQL. Tipo, no while:
<?php $ac = mysql_query("SELECT SQL_CACHE * FROM tabela ORDER BY id"); while ($r = mysql_fetch_array($ac)) { $id = $r['id']; $nome = $r['nome']; $email = $r['email']; //... } ?>
Mesma coisa: o MySQL guarda em cache e se a mesma consulta for efetuada, ele usa o cache e tudo fica melhor - mais rápido e com menos recursos do servidor.
André Sam!
http://www.netmultibusca.com.br
Novo Comentário: