MySQL Caching - PullRequest
       14

MySQL Caching

1 голос
/ 13 ноября 2008

Прошлой ночью я добавил параметр в хранимую процедуру в базе данных mySQL. Я получил к нему доступ, испортил параметр и решил снова удалить этот параметр для тестирования. Через несколько минут после воссоздания процедуры без параметра мой командный объект все еще жаловался на отсутствующий параметр. Это ошибка MySQL, MySQL / Connector, ADO или библиотеки Enterprise, и что я могу с этим поделать?

1 Ответ

1 голос
/ 16 ноября 2008

По умолчанию MySQL кэширует запросы в ваших хранимых процедурах. Проверьте, включен ли Query Cache:

SHOW VARIABLES LIKE 'query_cache%'

Вызовы хранимых процедур не кэшируются MySQL, но если query_cache_type включено, это повлияет на кэширование запросов, отправленных из процедуры. Возможно, заставляя MySQL возвращать те же результаты в течение пары минут. Попробуйте очистить кеш, или еще лучше, сбросьте кеш запросов, чтобы удалить все запросы, если ваша обновленная процедура продолжает возвращать предыдущий набор результатов:

RESET QUERY CACHE 

Это должно устранить любое кэширование сервером MySQL.

В следующий раз, когда это произойдет, вы можете выполнить процедуру вручную через другой инструмент, который не использует MySQL / Connector или Enterprise Library. Это скажет вам, если старый набор результатов кэшируется либо MySQL, либо драйверами и блоками приложения в вашем приложении.

Редактировать: пожалуйста, прочитайте комментарии ниже, автор desertwebdesign. После воссоздания sproc сбросьте соединение. Пул соединений может держать соединение открытым, поэтому, вероятно, лучше убить соединение из MySQL. У большинства браузеров запросов есть вкладка, которая позволяет уничтожать соединения в MySQL, если вы входите в систему с привилегиями процесса / супер.

SHOW FULL PROCESSLIST
KILL CONNECTION thread_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...