Не могу получить правильные результаты от MySQL

У меня есть таблица с именем столбца status чье значение может быть 1,2 и 3.

Скажем, имя таблицы НИЧЕГО, какой-то поток в моем приложении выполнил запрос

 SELECT order_num, `status` from ANYTHING WHERE status = 2

он вернет 2 записи следующим образом.

order_num             status
D2017101100001            2
D2017101100002            2

После этого другой поток в том же приложении обновил статус D2017101100001 в 3 и мы можем видеть статус изменен на 3 от клиента Navicat. Затем вызвал запрос

SELECT order_num, `status` from ANYTHING WHERE status = 2

еще раз, но, к сожалению, мы получили те же результаты, что и раньше, D2017101100001 все еще вернулся.

И тогда мы казнили

SELECT order_num, `status` from ANYTHING WHERE status = 3

D2017101100001 не будут возвращены.

Но через несколько секунд все становится нормальным D2017101100001 будут возвращены из условия status = 3 и не вернулся из status = 2,

Мы подозревали, что это вызвано кешем запросов, но когда мы проверяли состояние QChace, значение QCache_hits равно 0, как показано ниже.

Variable_name               value
Qcache_free_blocks            1
Qcache_free_memory         1031832
Qcache_hits                   0
Qcache_inserts                0
Qcache_lowmem_prunes          0
Qcache_not_cached          31050313
Qcache_queries_in_cache       0
Qcache_total_blocks           1
Qcache_total_blocks           1

Мы также использовали mybatis, но для этого запроса у нас был кеш first_level, и мы видели журнал попаданий в базу данных, поэтому, похоже, основная причина все еще на стороне mysql.

Если кто-нибудь сталкивался с этой проблемой раньше? Пожалуйста, дайте нам помощь.

0 ответов

Другие вопросы по тегам