SHOW PROCESSLIST не показывает кеш запросов. Кеш запросов не хранит запросы, он хранит результаты запросов. То есть data.
То, что вы видите в SHOW PROCESSLIST, это запущенные запросы. Когда клиент подключается, сервер MySQL создает поток на сервере. Вот что выполняет каждый запрос для этого соединения. Когда клиент закрывается, поток на сервере прерывается.
Если ваш лямбда-скрипт завершился ненормально, например, из-за ограничения AWS, сервер MySQL может не сразу понять, что клиент имеет ушел, поэтому сервер позволяет продолжать выполнение запроса до его завершения. Но не будет клиента, чтобы получить результаты. В конце концов сервер истечет время ожидания этого потока и прекратит его.
Если вы используете Lambdas, вы должны быть особенно внимательны, чтобы убедиться, что ваши запросы хорошо оптимизированы и не будут выполняться дольше, чем время выполнения Lambda. предел, который, если я помню, составляет 5 минут.
Если у вас запрос, который выполняется дольше 5 минут, он не подходит для запуска в лямбда-выражении.
Ваш комментарий:
Это довольно легко выполнить запрос SQL в течение 30 минут или более, если он сканирует большой объем данных неэффективным образом. Иногда SQL запросы настолько неэффективны, что их трудно выполнить за меньше , чем за 30 минут!
MySQL имеет возможность завершить запрос после определенного времени, но Я думаю, что это неправильное решение. Если вы заставляете сервер ограничивать время для запроса, это не означает, что вы получите результаты за меньшее время, это означает, что запрос отменен, и вы не получите никаких результатов. Аналогично, если это ОБНОВЛЕНИЕ, вы не ожидаете набор строк в качестве результата, но он все равно будет отменен. Другими словами, желаемое ОБНОВЛЕНИЕ не произойдет.
Лучшее решение - оптимизировать запрос, поэтому он обычно выполняется достаточно быстро, чтобы дать вам результаты, прежде чем вы захотите, чтобы время истекло.