- MySQL Sintonia Pergunta
- Como identificar MySQL consultas lentas e preocupações relacionadas
- Como sintonizar o Servidor MySQL
Há quanto tempo o servidor MySQL executado consultas neste estado?
Tem sido sempre lento ou essas consultas funcionou muito bem até algumas semanas atrás?
O que mudou, se alguma coisa?
Você começa também seguindo algumas orientações por Shlomi Noach .
Ele tem algumas consultas úteis listados neste post do blog.
- http://code.openark.org/blog/mysql/useful-database-analysis-queries-with-information_schema
- "A consulta a seguir retorna o tamanho total por motor por banco de dados." - Shlomi Noach.
- "Veja se algum índice é um prefixo de outro (caso em que é redundante)" - Shlomi Noach.
"Veja se quaisquer dois índices são idênticos" - Shlomi Noach.
- http://ronaldbradford.com/blog/10x-performance-improvements-in-mysql-a-case-study-2010-02-07/
Então, vamos cavar um pouco mais sobre o problema de consultas lentas.
Este é um exemplo simples para que seus resultados podem variar.
Primeiro reunir alguns números:
% De consultas lentas
Apenas dados de demonstração para os seus resultados irão variar.
show status like 'Slow_queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries | 7 |
+---------------+-------+
show status like 'Questions';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions | 84 |
+---------------+-------+
1 row in set (0.01 sec)
SELECT (7 / 84) * 100 as "% Slow Queries";
+----------------+
| % Slow Queries |
+----------------+
| 8.3333 |
+----------------+
slow_query_log
Reúna a localização, que o DBA em tempo integral já deve saber, mas apenas no caso de:
show variables like '%slow_query%';
+---------------------+-------------------------------+
| Variable_name | Value |
+---------------------+-------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/mysql-slow.log |
+---------------------+-------------------------------+
2 rows in set (0.00 sec)
Comece a olhar sobre estas consultas e funcionando explica para ver o que poderia ser o problema.
Se você quiser, pode rever algumas ferramentas para ajudar.
- http://dev.mysql.com/doc/refman/5.6/en/mysqldumpslow.html
- ou seja: # mysqldumpslow-t 10-s em-r mysql-slow.log
- http://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html
- ou seja: # pt-query-digest mysql-slow.log
- http://hackmysql.com/mysqlsla
- . isto é: # / bin / mysqlsla - de log lento / var / lib / mysql / mysql-slow.log
- http://www.fromdual.com/tools
- George RR Martin , A Game of Thrones
"Alguém que só lê jornais e na melhor das hipóteses livros de autores contemporâneos olha para mim como uma pessoa extremamente míope que despreza óculos. Ele é completamente dependente dos preconceitos e modas de seu tempo, já que ele nunca chega a ver ou ouvir qualquer outra coisa. "
- Albert Einstein
Para obter os melhores resultados, use mais de uma dessas ferramentas e garantir que você obtenha o retrato grande e entender o que está sendo apresentado a você.
Mais informações sobre a explicar pode ser encontrado abaixo:
- http://dev.mysql.com/doc/refman/5.6/en/using-explain.html
- http://www.lornajane.net/posts/2011/explaining-mysqls-explain
- http://www.slideshare.net/myxplain/explaining-the-mysql-explain
- http://www.slideshare.net/ligaya/explain
- http://www.techrepublic.com/article/three-easy-ways-to-optimize-your-mysql-queries/6137168
Algumas preocupações adicionais para ajudar o desempenho da consulta.
Eficiência Cache de Consultas
Apenas dados de demonstração para os seus resultados irão variar.
> SELECT @@have_query_cache;
+--------------------+
| @@have_query_cache |
+--------------------+
| YES |
+--------------------+
>show status like '%Qcache_hits%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Qcache_hits | 32 |
+---------------+-------+
1 row in set (0.00 sec)
> show status like '%Com_select%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select | 16 |
+---------------+-------+
1 row in set (0.00 sec)
> SELECT ( 32 / (16 + 32) ) * 100 AS "Query Cache Efficiency";
+------------------------+
| Query Cache Efficiency |
+------------------------+
| 66.6667 |
+------------------------+
1 row in set (0.00 sec)
Eu não quero reescrever o que Pedro já escreveu para consultar seus posts .
Avaliar a eficiência do seu cache de consultas é. Como determinista são as suas dúvidas?
- http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/
- http://www.mysqlperformanceblog.com/2006/07/27/mysql-query-cache/
Junta que precisa de um índice
Apenas dados de demonstração para os seus resultados irão variar.
> show status like '%Select_range_check%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| Select_range_check | 0 |
+--------------------+-------+
> show status like '%Select_full_join%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Select_full_join | 1 |
+------------------+-------+
> SELECT (0 + 1) AS "# of Joins that need an index";
#
This is used below as the numerator in
"# of Joins that need an index today"
+-------------------------------+
| # of Joins that need an index |
+-------------------------------+
| 1 |
+-------------------------------+
> show status like 'Uptime';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| Uptime | 335243 |
+---------------+--------+
> SELECT (1/ (335243/86400 )) as " # of Joins that need an index today" ;
+-------------------------------------+
| # of Joins that need an index today |
+-------------------------------------+
| 0.2577 |
+-------------------------------------+
Esperamos que você possa avaliar as consultas lentas encontrados com o log, bem como rever a sua eficiência do cache de consulta, bem como encontrar a junta que precisa de um índice de tudo a partir do "select @ @ slow_query_log_file";
Esperemos que este tenha chegado a começar a resolver um problema muito antigo no MySQL.