1 bilhão de consultas mysql em 24 dias? Alguma coisa pode estar errada?

7

Eu escrevi um site com muitos dados, mas o phpmyadmin está me dizendo que houve 1 bilhão de consultas em 24 dias. Isso parece um pouco alto.

Eu sei que não há muitas pessoas usando o site, já que, embora seja ao vivo, não há dados. Eu teria esperado algo nas centenas de milhares, das consultas que tenho feito para testes.

Algo está errado?

Editar: O número de consultas parece estar crescendo a uma taxa de 500 / segundo. Isso tudo é muito novo para mim, então não sei se algo está errado.

    
por roviuser 10.08.2011 / 17:48

1 resposta

11

O MySQL pedirá consultas internamente. Na verdade, praticamente tudo que você faz no MySQL é uma consulta.

Se você ativar o log geral ou o log de consultas lentas, tudo o que o mysqld faz é gravado.

Se você tiver --log- consultas-não-usando-índices ativadas, tudo que não envolve índices está no log lento.

Digamos que você execute essa consulta:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| annarbor           |
| dude               |
| example            |
| garbage            |
| lovesh             |
| mysql              |
| performance_schema |
| replagdb           |
| stuff              |
| test               |
| tostinni           |
| wordpress          |
| zipcodes           |
+--------------------+
14 rows in set (0.06 sec)

Sim, MOSTRE BASES DE DADOS; é uma consulta. De fato, o que é equivalente a information_schema ???

mysql> select schema_name "Database" from information_schema.schemata;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| annarbor           |
| dude               |
| example            |
| garbage            |
| lovesh             |
| mysql              |
| performance_schema |
| replagdb           |
| stuff              |
| test               |
| tostinni           |
| wordpress          |
| zipcodes           |
+--------------------+
14 rows in set (0.08 sec)

A tabela information_schema.schemata possui um índice ???

mysql> show create table information_schema.schemata\G
*************************** 1. row ***************************
       Table: SCHEMATA
Create Table: CREATE TEMPORARY TABLE 'SCHEMATA' (
  'CATALOG_NAME' varchar(512) NOT NULL DEFAULT '',
  'SCHEMA_NAME' varchar(64) NOT NULL DEFAULT '',
  'DEFAULT_CHARACTER_SET_NAME' varchar(32) NOT NULL DEFAULT '',
  'DEFAULT_COLLATION_NAME' varchar(32) NOT NULL DEFAULT '',
  'SQL_PATH' varchar(512) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

Não, isso não acontece. Então, MOSTRE BASES DE DADOS; pousaria em um log geral e no log lento (com --log-queries-não-using-indexes ativados)

Portanto, muitas operações que não consideramos constituir uma consulta podem ser apenas uma consulta, mas internas ao mysqld.

Se você estiver usando alguma ferramenta de monitoramento conectada ao mysqld, isso também irá aumentar a contagem de consultas.

Exemplo:

mysql> show global status like 'uptime'; select * from information_schema.global_status where variable_name='uptime';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 613   |
+---------------+-------+
1 row in set (0.00 sec)

+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| UPTIME        | 613            |
+---------------+----------------+
1 row in set (0.00 sec)

Apenas recuperar o tempo de atividade do mysqld é uma consulta. Internamente, como o MySQL conta as consultas sendo executadas? Aqui estão duas variáveis de status que podem lançar alguma luz:

  • Consultas : o número de declarações executado pelo servidor. Esta variável inclui instruções executadas em programas armazenados, ao contrário da variável Questions. Não conta os comandos COM_PING ou COM_STATISTICS.

  • Perguntas : o número de declarações executado pelo servidor. Isso inclui apenas instruções enviadas ao servidor por clientes e não instruções executadas em programas armazenados, ao contrário da variável Consultas. Esta variável não conta os comandos COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE ou COM_STMT_RESET.

Por favor, não se preocupe se o seu servidor MySQL está sendo monitorado porque o monitoramento que solicita variáveis de status está executando consultas internamente para recuperar os dados solicitados.

1 bilhão em 24 dias é

  • 41,7 milhões de consultas por dia
  • 1,736 milhões de consultas por hora
  • 28.935 consultas por minuto
  • 482 consultas por segundo

Para uma instância do MySQL que está sendo monitorada, esses números não são de todo farfetched.

Se você estiver usando o MySQL Workbench, o MySQL Administrator ou o phpMyAdmin, qualquer página que esses produtos gerem ou atualizem convocará essas pequenas consultas de status e executará números rapidamente.

    
por 10.08.2011 / 21:42

Tags