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.