Назад | Перейти на главную страницу

1 миллиард запросов mysql за 24 дня? Может что-то не так?

Я написал веб-сайт с интенсивным использованием данных, но phpmyadmin сообщает мне, что за 24 дня было выполнено 1 миллиард запросов. Это кажется немного завышенным.

Я знаю, что сайтом пользуется не так уж много людей, поскольку пока он работает, на самом деле нет никаких данных. Я ожидал сотен тысяч от запросов, которые я делал для тестирования.

Что-то не так?

Редактировать: Количество запросов, кажется, растет со скоростью 500 в секунду. Для меня это все в новинку, поэтому я не знаю, что-то не так.

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)

Да, ПОКАЗАТЬ БАЗЫ ДАННЫХ; это запрос. Фактически, что эквивалентно 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)

Есть ли у таблицы 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 подсчитывает выполняемые запросы на внутреннем уровне? Вот две переменные состояния, которые могут пролить свет:

  • Запросы : Количество операторов, выполненных сервером. В эту переменную входят операторы, выполняемые в сохраненных программах, в отличие от переменной 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, любая страница, созданная или обновленная этими продуктами, будет вызывать эти небольшие запросы состояния и быстро увеличивать числа.