Почему некоторые соединения mysql выбирают старые данные базы данных mysql после удаления + вставки?

у меня возникают проблемы с сеансами в моем веб-приложении python / wsgi. Для каждого потока в каждом из двух процессов демона wsgi существует свое постоянное соединение mysqldb. Иногда после удаления старых сеансов и создания нового некоторые подключения по-прежнему выбирают старые сеансы в select, что означает, что они не могут проверить сеанс и снова запросить вход.

Подробности: сеансы хранятся в таблице InnoDB в локальной базе данных mysql.После аутентификации (через CAS) я удаляю все предыдущие сеансы для этого пользователя, создаю новый сеанс (вставляю строку), фиксирую транзакцию и перенаправляю на первоначально запрошенную страницу с новым идентификатором сеанса в файле cookie. Для каждого запроса идентификатор сеанса в cookie сравнивается с сеансами в базе данных.

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

Почему я получаю кешированные результаты? Где еще могло произойти кеширование и как его остановить или обновить кеш? В принципе, почему другие соединения не видят вновь вставленные данные?

8
задан jmilloy 16 February 2012 в 20:25
поделиться