无法从mysql获得正确的结果

时间:2017-10-11 07:06:17

标签: mysql navicat

我有一个表格,其中有一个名为status的列,其值可以是1,2和3.

假设表名是ANYTHING,我的应用程序中的某个线程执行了查询

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

它将返回2条记录,如下所示。

order_num             status
D2017101100001            2
D2017101100002            2

之后,同一应用程序中的另一个线程将D2017101100001的状态更新为3,我们可以看到状态从Navicat客户端更改为3。 然后触发查询

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 个答案:

没有答案