Richieste I / O Amazon RDS - 1 query = 1 I / O fatturabile?


9

Ho un database InnoDB che mi piacerebbe migrare su Amazon RDS.

La mia attuale implementazione, ospitata sul mio server, mostra circa 8 milioni di query al mese.

Il sito RDS afferma che I / O Rate $ 0,10 per 1 milione di richieste

1 I / O = 1 richiede? ad esempio, mi verranno addebitati $ 80 / mese per questo importo di utilizzo + le commissioni RDS?

Risposte:


7

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


1
Grazie per la risposta ... intendevo digitare 800M, non 8M. Indipendentemente da ciò, sai se 1 query = 1 I / O?

Se tu potessi rispondere alla mia domanda correlata qui sarebbe fantastico: dba.stackexchange.com/questions/49869/…
Fai clic su Aggiorna

6

No, un'operazione I / O non equivale a una query. Una query può comportare 0 operazioni di I / O se è gestita dalla cache di query (e si è fortunati) oppure può provocare più operazioni di I / O. Potenzialmente, centinaia e migliaia, immagino, a seconda delle tabelle, degli indici, delle query e di altri dettagli.

http://aws.amazon.com/ebs/ afferma quanto segue:

L'archiviazione di volumi per volumi standard viene addebitata dall'importo fornito in GB al mese fino al rilascio. L'I / O del volume per i volumi standard viene addebitato dal numero di richieste effettuate al volume. Programmi come IOSTAT possono essere utilizzati per misurare l'esatto utilizzo I / O del sistema in qualsiasi momento. Tuttavia, le applicazioni e i sistemi operativi eseguono spesso diversi livelli di memorizzazione nella cache, quindi per i volumi standard è probabile che sulla fattura vengano visualizzati un numero inferiore di richieste I / O rispetto a quelle visualizzate dall'applicazione, a meno che non si sincronizzino tutti gli I / O sul disco .

iostat è un'utilità linux di basso livello, che non sa nulla delle query del database. http://linux.die.net/man/1/iostat

La citazione sopra è per il servizio EBS, ma RDS si basa su EC2 ed EBS, quindi sono abbastanza fiducioso che significano la stessa cosa in RDS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.