Интересная особенность обнаружена (см. сабжект). Есть контейнер. 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 не влияет. И даже более того, сразу после перезагрузки контейнера запрос может выполнится (по-моему, только если это первый запрос после перегрузки контейнера) и время выполнения 1 минута 50 секунд ... Повтрорное исполнение запроса -- прерывается по таймауту... Т.е. дело в каких-то других настройках MySQL, или в Dockers... но где и что не так??
P.S. Дя, я пишу парсер-исследователь всего интернета и запрос пытается понять какие хосты не отвечают ни по http, ни по https (т.е. хосты которые отвалились по тамайутам, вернули код ошибки не равный 200 и т.п.)