Żądania We / Wy Amazon RDS - 1 zapytanie = 1 płatne We / Wy?

9

Mam bazę danych InnoDB, którą chciałbym przenieść na Amazon RDS.

Moja obecna implementacja, hostowana na własnym serwerze, pokazuje około 8 milionów zapytań miesięcznie.

Witryna RDS twierdzi, że stawka We / Wy 0,10 USD za 1 milion żądań

Czy 1 I / O = 1 zapytanie? tj. czy naliczę opłatę w wysokości 80 USD / mc za taką ilość użytkowania + opłaty RDS?

Allo
źródło

Odpowiedzi:

7

OSTRZEŻENIE: Bądź bardzo ostrożny ze swoimi liczbami i tym, co postrzegasz jako zapytanie !!!

Dlaczego daję takie ostrzeżenie ???

W sierpniu 2011 roku napisałem post w ServerFault, wyjaśniając, w jaki sposób możliwe jest wykonanie 1 miliarda zapytań w ciągu 24 dni .

Oto cały post:

MySQL będzie wywoływał zapytania wewnętrznie. W rzeczywistości prawie wszystko, co robisz w MySQL, jest zapytaniem.

Jeśli włączysz dziennik ogólny lub dziennik powolnych zapytań, wszystko, co robi mysqld, zostanie zapisane.

Jeśli masz włączoną opcję --log-queries-not-using-indexes , wszystko, co nie obejmuje indeksów, ląduje w wolnym dzienniku.

Załóżmy, że uruchamiasz to zapytanie:

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)

Tak, POKAŻ BAZY DANYCH; jest zapytaniem. W rzeczywistości, co ekwiwalent schematu informacyjnego ???

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)

Czy tabela information_schema.schemata ma indeks ???

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)

Nie. POKAŻ BAZY DANYCH; wylądowałby w dzienniku ogólnym i dzienniku powolnym (z włączoną opcją --log-queries-not-using-indexs)

Dlatego wiele operacji, które naszym zdaniem nie stanowią zapytania, może być tylko zapytaniem, ale wewnętrznym dla mysqld.

Jeśli korzystasz z jakichkolwiek narzędzi monitorowania, które są podłączone do mysqld, spowoduje to także zwiększenie liczby zapytań.

Przykład:

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)

Samo odzyskanie czasu działania mysqld to zapytanie. W jaki sposób MySQL zlicza wykonywane zapytania? Oto dwie zmienne statusu, które mogą rzucić nieco światła:

  • Zapytania : liczba instrukcji wykonanych przez serwer. Ta zmienna obejmuje instrukcje wykonywane w przechowywanych programach, w przeciwieństwie do zmiennej Pytania. Nie liczy poleceń COM_PING ani COM_STATISTICS.

  • Pytania : Liczba instrukcji wykonanych przez serwer. Dotyczy to tylko instrukcji wysyłanych do serwera przez klientów, a nie instrukcji wykonywanych w przechowywanych programach, w przeciwieństwie do zmiennej Queries. Ta zmienna nie uwzględnia poleceń COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE ani COM_STMT_RESET.

Nie przejmuj się, jeśli serwer MySQL jest monitorowany, ponieważ monitorowanie wywołujące zmienne statusu uruchamia zapytania wewnętrznie w celu pobrania żądanych danych.

1 miliard w ciągu 24 dni to

  • 41,7 miliona zapytań dziennie
  • 1,736 miliona zapytań na godzinę
  • 28 935 zapytań na minutę
  • 482 zapytań na sekundę

W przypadku monitorowanej instancji MySQL liczby te wcale nie są dalekosiężne.

Jeśli korzystasz z MySQL Workbench, MySQL Administrator lub phpMyAdmin, każda strona generowana lub aktualizowana przez te produkty przywoła te małe zapytania o status i szybko uruchomi numery.

PODSUMOWANIE

Jeśli Twoja witryna rzeczywiście wysyła zapytania o wartości 8 mln, wówczas współczynnik we / wy 0,10 USD za 1 milion żądań powinien wynosić 0,80 USD (80 centów) miesięcznie. Jeśli wykonasz 1 miliard zapytań w ciągu miesiąca, to 100,00 $. Upewnij się, że te liczby się przesuwają i DOSTARCZAJĄC SIĘ DO PISANIA Z TWOIM SIEDZIBĄ CFO NASTĘPNIE DLA CIEBIE !!!

AKTUALIZACJA 2012-05-02 16:26 EDT

Ponieważ jest to 800 milionów zapytań / miesiąc, to 80,00 USD / miesiąc

RolandoMySQLDBA
źródło
1
Dzięki za odpowiedź ... Chciałem wpisać 800M, a nie 8M. Niezależnie od tego, czy wiesz, czy 1 zapytanie = 1 We / Wy?
Jeśli mógłbyś odpowiedzieć na moje pokrewne pytanie tutaj, byłoby świetnie: dba.stackexchange.com/questions/49869/…
Kliknij Upvote
6

Nie, jedna operacja We / Wy nie jest równa jednemu zapytaniu. Jedno zapytanie może spowodować 0 operacji We / Wy, jeśli jest obsługiwane przez pamięć podręczną zapytań (i masz szczęście) lub może spowodować wiele operacji We / Wy. Potencjalnie setki i tysiące, jak sądzę, w zależności od tabel, indeksów, zapytań i innych szczegółów.

http://aws.amazon.com/ebs/ stwierdza, co następuje:

Pojemność wolumenu za woluminy standardowe jest naliczana według kwoty, którą udostępniasz w GB miesięcznie, do momentu zwolnienia. Objętość operacji we / wy dla woluminów standardowych jest naliczana według liczby żądań wysłanych do woluminu. Programy takie jak IOSTAT można w dowolnym momencie zmierzyć dokładne użycie I / O systemu. Jednak aplikacje i systemy operacyjne często wykonują buforowanie na różnych poziomach, więc w przypadku woluminów standardowych na rachunku prawdopodobnie pojawi się mniejsza liczba żądań We / Wy niż w przypadku aplikacji, chyba że zsynchronizujesz wszystkie operacje We / Wy na dysku .

iostat to niskopoziomowe narzędzie linux, które nie wie nic o zapytaniach do baz danych. http://linux.die.net/man/1/iostat

Powyższy cytat dotyczy usługi EBS, ale RDS opiera się na EC2 i EBS, więc jestem całkiem pewien, że w RDS oznaczają to samo.

Iwan Kurmanow
źródło