Почему MySQL прерывает (отменяет) «долгие» запросы?

Есть контейнер. yml вот такой:

version: "2.1"
services:
   database:
      container_name: mysql8_v001
      image: mysql:latest
      volumes:
         # - "d:/docker-compose/mysql/cfg:/etc/mysql"
         - "d:/docker-compose/mysql/data:/var/lib/mysql"
      environment:
         - "MYSQL_ROOT_PASSWORD=пароль"
         - "MYSQL_ROOT_HOST=10.10.10.10"
      ports:
         - "3306:3306"
      command: --bind-address="0.0.0.0" --skip_ssl="true" --wait_timeout="300" --mysqlx_read_timeout="300" --mysqlx_connect_timeout="300" --net_read_timeout="300"

Как можно понять, работает под Windows. И если время выполнения запроса превышает 31 сек, то такой запрос не выполняется. Например:

SELECT DISTINCT
  COUNT(scraper_tbhosts.id) AS NUM
FROM scraper_tbhosts
  LEFT OUTER JOIN taggit_taggeditem
    ON taggit_taggeditem.object_id = scraper_tbhosts.id
  INNER JOIN taggit_tag
    ON taggit_taggeditem.tag_id = taggit_tag.id
WHERE taggit_tag.name IN ('http', 'https')
AND taggit_taggeditem.content_type_id = 7

... будет прерван. А абсолютно такой-же запрос:

SELECT DISTINCT
  COUNT(scraper_tbhosts.id) AS NUM
FROM scraper_tbhosts
  LEFT OUTER JOIN taggit_taggeditem
    ON taggit_taggeditem.object_id = scraper_tbhosts.id
  INNER JOIN taggit_tag
    ON taggit_taggeditem.tag_id = taggit_tag.id
WHERE taggit_tag.name NOT IN ('http', 'https')
AND taggit_taggeditem.content_type_id = 7

... будет выполнен (5.8 секунды, возвращает NUM что-то в районе полтора миллиона).

Отличие в IN или NOT IN, а значит всё упирается только во время исполнения именно на моём наборе данных...

Как видно: настройка в конфиге mysql не влияет. И даже более того, сразу после перезагрузки контейнера запрос может выполнится (по-моему, только если это первый запрос после перегрузки контейнера) и время выполнения почти две нинуты ... Повторное исполнение запроса -- прерывается по таймауту... Т.е. дело в каких-то других настройках MySQL, или в Dockers... При этом в MySQL никаких настроек таймаутов, где есть 30 уже не осталось!.. Где и что не так??

P.S. Дя, я пишу парсер-исследователь всего интернета и запрос пытается понять какие хосты не отвечают ни по http, ни по https (т.е. хосты которые отвалились по тамайутам, вернули код ошибки не равный 200 и т.п.)

P.P.S. Запросы тестирую через dbForge Srudio for MySQL, но в нем нет настроек таймаутов... Только таймауту отладки и там они установлены в 300 секунд (!). Возможно дело в версии MySQL? Сейчас стоит 8.0.20 ... До того работал с другими версиями и никаких подобных проблем не наблюдал...


Ответы (1 шт):

Автор решения: erjemin

Оказалось проблема в клиенте. Я тестировал запросы на dbForge Studio for MySQL Professional версии 9.0.304 ... А у него как раз проблема с коннектом. Ошибку поправили в версии 9.0.338

https://www.filehorse.com/download-dbforge-studio-mysql/change-log/

→ Ссылка