ATTENZIONE: fai molta attenzione ai tuoi numeri e a ciò che vedi come una query !!!
Perché sto dando un tale avvertimento ???
Nell'agosto 2011, ho scritto un post su ServerFault spiegando come è possibile eseguire 1 miliardo di query in 24 giorni .
Ecco l'intero post:
MySQL richiederà query internamente. In effetti, qualsiasi cosa tu faccia in MySQL è una query.
Se attivi il registro generale o il registro delle query lente, tutto ciò che fa mysqld viene registrato.
Se hai abilitato --log-queries-not-using-indexes , tutto ciò che non riguarda gli indici viene inserito nel registro lento.
Supponiamo che tu esegua questa query:
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)
Sì, MOSTRA DATABASES; è una domanda. In effetti, quale equivalente di 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)
La tabella information_schema.schemata ha un indice ???
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)
No non lo fa. Quindi, MOSTRA DATABASES; atterrerebbe in un registro generale e nel registro lento (con --log-queries-not-using-indexes abilitato)
Pertanto, molte operazioni che non riteniamo possano costituire una query potrebbero essere solo una query, ma interne a mysqld.
Se si utilizzano strumenti di monitoraggio collegati a mysqld, ciò comporterebbe anche il conteggio delle query.
Esempio:
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)
Il solo recupero del tempo di attività di mysqld è una domanda. Internamente, in che modo MySQL conta le query in esecuzione? Ecco due variabili di stato che potrebbero far luce:
Query : il numero di istruzioni eseguite dal server. Questa variabile include istruzioni eseguite all'interno di programmi memorizzati, a differenza della variabile Domande. Non conta i comandi COM_PING o COM_STATISTICS.
Domande : il numero di istruzioni eseguite dal server. Ciò include solo le istruzioni inviate al server dai client e non le istruzioni eseguite all'interno dei programmi memorizzati, a differenza della variabile Queries. Questa variabile non conta i comandi COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE o COM_STMT_RESET.
Non preoccuparti se il tuo server MySQL viene monitorato perché il monitoraggio che richiede variabili di stato esegue query internamente per recuperare i dati richiesti.
1 miliardo in 24 giorni è
- 41,7 milioni di query al giorno
- 1.736 milioni di query all'ora
- 28.935 query al minuto
- 482 query al secondo
Per un'istanza di MySQL che viene monitorata, questi numeri non sono affatto inverosimili.
Se si utilizza MySQL Workbench, MySQL Administrator o phpMyAdmin, qualsiasi pagina generata o aggiornata da questi prodotti richiamerà queste piccole query di stato ed eseguirà rapidamente i numeri.
SOMMARIO
Se il tuo sito in effetti fa 8 milioni di query, una tariffa I / O $ 0,10 per 1 milione di richieste dovrebbe essere di $ 0,80 (80 centesimi) al mese. Se esegui 1 miliardo di query in un mese, $ 100,00. Per favore, assicurati assolutamente che questi numeri jive e OTTIENI A SCRIVERE CON IL TUO CFO SEDUTO VICINO A TE !!!
AGGIORNAMENTO 2012-05-02 16:26 EDT
Dal momento che sono 800 milioni di query al mese, questo è $ 80,00 al mese