MYSQL 200 запросов выбора одновременно - PullRequest
1 голос
/ 13 июля 2020

В настоящий момент у меня есть сервер базы данных, на котором мне нужно одновременно выполнять около 200 запросов через веб-сокет (необходимо для веб-сокета). В то же время круглосуточно работает процесс, который добавляет данные в эту базу данных.

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

Проблема: мне кажется, что Mysql ждет запросов. Поэтому он запускает их поочередно, в то время как я хочу, чтобы они работали асинхронно, чтобы поддерживать скорость. Я уже искал где-то в Google об уровне изоляции транзакции, но мне это не совсем понятно ...

У меня также есть идея, что, поскольку мы выполняем эти 200 запросов каждую секунду, он выбрасывает меня из соединения. Через некоторое время, иногда через полчаса, а иногда через 5 минут, я получаю сообщения об ошибках:
Database Error: Error: connect ETIMEDOUT & Host '**. ***. **. **' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' ". Теперь последнее легко решить, выполнив FLUSH HOSTS в терминале mysql, но это не кажется правильным решением.

Итак, мой вопрос: есть ли что-нибудь в сообщении об ошибке, которое я получаю что делать с этими запросами, ожидающими, что "очередь" станет слишком длинной? Или что-то еще происходит?

Информация о базе данных:

  • Тип сервера: Mysql
  • Работает на Ubuntu

(Если потребуется дополнительная информация, добавлю позже)

1 Ответ

0 голосов
/ 13 июля 2020

MySQL будет запускать запросы параллельно в меру своих возможностей без какого-либо специального вмешательства.

Сообщение о блокировке вызвано тем, что ваш веб-сокет генерирует так много ошибок подключения за короткий период времени, что MySQL интерпретирует это как нападение. Вы должны отслеживать обратную связь об ошибках, получаемую вашим процессом, и решать возникающие проблемы. (Очень вероятно, что вам нужно будет поднять сервер max_connections .)

...