AVISO: Tenha muito cuidado com seus números e com o que você vê como uma Consulta !!!
Por que estou dando esse aviso ???
Em agosto de 2011, escrevi uma postagem no ServerFault explicando como é possível executar 1 bilhão de consultas em 24 dias .
Aqui está todo o post:
O MySQL solicitará consultas internamente. De fato, praticamente qualquer coisa 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 será registrado.
Se você tiver --log-queries-not-using-indexes ativado, tudo o que não envolve índices fica no log lento.
Digamos que você execute esta 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, MOSTRAR BASES DE DADOS; é uma consulta. De fato, qual o equivalente 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, não tem. Então, mostre bases de dados; aterrissaria em um log geral e no log lento (com --log-queries-not-using-indexes ativado)
Portanto, muitas operações que não acreditamos que constituam 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 aumentaria 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 que estão sendo executadas? Aqui estão duas variáveis de status que podem lançar alguma luz:
Consultas : O número de instruções executadas pelo servidor. Essa variável inclui instruções executadas nos programas armazenados, diferentemente da variável Questions. Não conta os comandos COM_PING ou COM_STATISTICS.
Perguntas : O número de instruções executadas pelo servidor. Isso inclui apenas instruções enviadas ao servidor pelos clientes e não instruções executadas em programas armazenados, diferentemente da variável Queries. Essa 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 estiver 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 exagerados.
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 aumentará os números rapidamente.
RESUMO
Se o seu site realmente faz 8 milhões de consultas, uma taxa de E / S de US $ 0,10 por 1 milhão de solicitações deve ser de US $ 0,80 (80 centavos) por mês. Se você executar 1 bilhão de consultas em um mês, esses US $ 100,00. Por favor, tenha certeza absoluta de que esses números se encaixam e entre em contato com seu CFO sentado ao seu lado !!!
UPDATE 2012-05-02 16:26 EDT
Como são 800 milhões de consultas / mês, isso significa US $ 80,00 / mês
Não, uma operação de E / S não é igual a uma consulta. Uma consulta pode resultar em 0 operações de E / S se for tratada pelo cache da consulta (e você tiver sorte) ou pode resultar em várias operações de E / S. Potencialmente, centenas e milhares, eu acho, dependendo das tabelas, índices, consultas e outros detalhes.
http://aws.amazon.com/ebs/ afirma o seguinte:
O iostat é um utilitário linux de baixo nível, que não sabe nada sobre consultas ao banco de dados. http://linux.die.net/man/1/iostat
A citação acima é para o serviço EBS, mas o RDS é baseado no EC2 e no EBS, por isso estou bastante confiante de que eles significam a mesma coisa no RDS.
fonte