Запити Amazon RDS на введення / виведення - 1 запит = 1 підлягає оплаті введення / виведення?


9

У мене є база даних InnoDB, яку я хочу перенести на RDS Amazon.

Моя поточна реалізація, розміщена на моєму власному сервері, показує приблизно 8М запитів на місяць.

На сайті RDS йдеться про те, що введення / виведення оцінюють 0,10 дол. США на 1 мільйон запитів

Чи 1 I / O = 1 запит? тобто, мені буде нараховано 80 доларів на місяць за цю кількість використання + RDS комісії?

Відповіді:


7

ПОПЕРЕДЖЕННЯ: Будьте дуже уважні до своїх номерів і того, що ви розглядаєте як Запит !!!

Чому я даю таке попередження ???

Ще в серпні 2011 року я написав повідомлення в ServerFault, в якому пояснив, як можна виконати 1 мільярд запитів за 24 дні .

Ось цілий пост:

MySQL буде викликати запити внутрішньо. Насправді, майже все, що ви робите в MySQL - це запит.

Якщо ви ввімкнете загальний журнал або журнал повільних запитів, все, що робить mysqld, записується.

Якщо у вас увімкнено --log-queries-not-use-index , все, що не включає індекси, потрапляє у повільний журнал.

Скажімо, ви виконуєте цей запит:

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)

Так, ПОКАЗУЙТЕ ДАНІ; - це запит. Насправді, що еквівалентна інформація_шема ???

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)

Чи має таблиця information_schema.schemata індекс ???

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)

Ні, це не є. Отже, ПОКАЗУЙТЕ ДАНІ; висаджується в загальний журнал і повільний журнал (із ввімкненими --log-queries-not-use-indexes)

Тому багато операцій, які, на наш погляд, не становлять запит, можуть бути просто запитом, але внутрішніми для mysqld.

Якщо ви використовуєте будь-які засоби моніторингу, підключені до mysqld, це також призведе до підрахунку запитів.

Приклад:

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)

Просто пошук часу роботи mysqld - це запит. Як внутрішньо, як MySQL підраховує виконувані запити? Ось дві змінні стану, які можуть пролити світло:

  • Запити : Кількість операторів, виконаних сервером. Ця змінна включає висловлювання, що виконуються в збережених програмах, на відміну від змінної Questions. Не враховує COM_PING або COM_STATISTICS команд.

  • Запитання : Кількість операторів, виконаних сервером. Сюди входять лише заяви, надіслані сервером клієнтами, а не заяви, виконані в збережених програмах, на відміну від змінної Queries. Ця змінна не враховує COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE або COM_STMT_RESET команд.

Будь ласка, не турбуйтеся, якщо ваш сервер MySQL контролюється, оскільки моніторинг, який вимагає змінних статусу, виконує запити внутрішньо для отримання запитуваних даних.

1 мільярд за 24 дні - це

  • 41,7 мільйонів запитів на день
  • 1,736 мільйонів запитів на годину
  • 28 935 запитів за хвилину
  • 482 запити в секунду

Для екземпляра MySQL, який відстежується, ці цифри взагалі не вичерпані.

Якщо ви використовуєте MySQL Workbench, MySQL Administrator або phpMyAdmin, будь-яка сторінка, яку ці продукти генерують або оновлять, викликає ці невеликі запити стану та швидко запускає номери.

ПІДСУМОК

Якщо ваш сайт дійсно робить 8М запитів, то показник вводу-виводу 0,10 дол. США на мільйон запитів повинен становити 0,80 долара (80 центів) на місяць. Якщо ви виконуєте 1 мільярд запитів щомісяця, це 100,00 долара. Будь ласка, переконайтесь, що ці цифри джив і ВІДПОВІДУЙТЕ, ЗАПИСАЙТЕ СЕМЕЙСЬКОГО КОНФОРМАТИЧНОГО СЕЙТУРУ, ЩО ВСТАНОВЛЯЄТЬСЯ до вас !!!

ОНОВЛЕННЯ 2012-05-02 16:26 EDT

Оскільки це 800M запитів на місяць, це $ 80,00 на місяць


1
Дякую за відповідь ... Я мав на увазі набрати 800М, а не 8М. Незалежно від того, чи знаєте ви, чи 1 запит = 1 введення / виведення?

Якщо ви зможете відповісти на моє відповідне запитання тут, було б чудово: dba.stackexchange.com/questions/49869/…
Клацніть Upvote

6

Ні, одна операція вводу / виводу не дорівнює одному запиту. Один запит може призвести до 0 операцій вводу-виводу, якщо ним обробляється кеш запитів (і вам пощастило), або це може призвести до декількох операцій вводу-виводу. Потенційно, сотні й тисячі, я думаю, залежно від таблиць, індексів, запитів та інших деталей.

http://aws.amazon.com/ebs/ визначає наступне:

Обсяг пам’яті для стандартних томів стягується із суми, яку ви надаєте в ГБ на місяць до моменту випуску. Обсяг вводу / виводу для стандартних томів стягується за кількістю запитів, які ви подаєте до свого обсягу. Такі програми, як IOSTAT, можна використовувати для вимірювання точного використання вводу / виводу для вашої системи в будь-який час. Однак програми та операційні системи часто кешують різний рівень кешування, тому для стандартних томів ви, швидше за все, побачите меншу кількість запитів вводу / виводу на рахунку, ніж це бачиться у вашій програмі, якщо ви не синхронізуєте всі свої введення-виведення на диск .

iostat - це низькорівнева утиліта Linux, яка нічого не знає про запити до бази даних. http://linux.die.net/man/1/iostat

Цитата вище стосується служби EBS, але RDS базується на EC2 та EBS, тому я впевнений, що вони означають те саме, що і в RDS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.