ВНИМАНИЕ: Будьте очень осторожны с вашими номерами и тем, что вы рассматриваете как запрос !!!
Почему я даю такое предупреждение ???
Еще в августе 2011 года я написал сообщение в ServerFault, объясняющее, как можно выполнить 1 миллиард запросов за 24 дня .
Вот весь этот пост:
MySQL будет вызывать запросы внутренне. Фактически, все, что вы делаете в MySQL, является запросом.
Если вы включите общий журнал или журнал медленных запросов, все, что делает mysqld, будет записано.
Если у вас включена опция --log-query-not-using-indexes , все, что не связано с индексами, попадает в медленный журнал.
Допустим, вы запустили этот запрос:
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-query-not-using-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 считает запросы, которые выполняются? Вот две переменные состояния, которые могут пролить некоторый свет:
Запросы : количество операторов, выполненных сервером. Эта переменная включает в себя операторы, выполняемые в хранимых программах, в отличие от переменной «Вопросы». Он не учитывает команды COM_PING или COM_STATISTICS.
Вопросы : Количество утверждений, выполненных сервером. Это включает в себя только операторы, отправляемые на сервер клиентами, а не операторы, выполняемые в хранимых программах, в отличие от переменной Queries. Эта переменная не учитывает команды COM_PING, COM_STATISTICS, COM_STMT_PREPARE, COM_STMT_CLOSE или COM_STMT_RESET.
Пожалуйста, не беспокойтесь, если ваш MySQL Server контролируется, потому что мониторинг, который вызывает переменные состояния, выполняет внутренние запросы для получения запрошенных данных.
1 миллиард за 24 дня
- 41,7 миллиона запросов в день
- 1.736 миллионов запросов в час
- 28 935 запросов в минуту
- 482 запроса в секунду
Для экземпляра MySQL, который отслеживается, эти числа не являются надуманными вообще.
Если вы используете MySQL Workbench, MySQL Administrator или phpMyAdmin, любая страница, сгенерированная или обновленная этими продуктами, вызовет эти небольшие запросы статуса и быстро наберет номера.
РЕЗЮМЕ
Если ваш сайт действительно выполняет 8 миллионов запросов, то скорость ввода-вывода $ 0,10 за 1 миллион запросов должна составлять $ 0,80 (80 центов) в месяц. Если вы выполняете 1 миллиард запросов в месяц, это 100,00 долларов. Пожалуйста, убедитесь, что эти цифры совпадают, и получите его в записи с вашим финансовым директором, сидящим рядом с вами !!!
ОБНОВЛЕНИЕ 2012-05-02 16:26 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Так как это 800 миллионов запросов в месяц, это $ 80,00 в месяц
Нет, одна операция ввода-вывода не совпадает с одним запросом. Один запрос может привести к 0 операциям ввода-вывода, если он обрабатывается кэшем запросов (и вам повезло), или это может привести к нескольким операциям ввода-вывода. Потенциально, сотни и тысячи, я думаю, в зависимости от таблиц, индексов, запросов и других деталей.
http://aws.amazon.com/ebs/ заявляет следующее:
iostat - это низкоуровневая утилита linux, которая ничего не знает о запросах к базе данных. http://linux.die.net/man/1/iostat
Приведенная выше цитата относится к сервису EBS, но RDS основан на EC2 и EBS, поэтому я вполне уверен, что в RDS они означают одно и то же.
источник