最近开发时遇到一个问题,请教一下各位大牛。
前提:1、两个数据库输入端,PC桌面软件使用MySQL C API开发;另有为手机端提动服务的webservice,使用 jdbc连接2、数据库为单点数据库,无主从。
现象:当手机端修改数据后,通过工具软件navicat可以看到数据库中数据已经修改,但是桌面端读出数据仍为原来的数据,未有修改。
疑问:首先我怀疑这是数据库缓存问题,但是数据库缓存的就数据在修改表后就会清空,按理说不应该出现这种状况。后来我反其道而行,通过桌面端修改,看手机端没有问题(实时被修改),因此排除了数据库缓存的问题。
然后我怀疑是因为长连接引起的,所以我将数据库连接改为每次查询之前进行连接,果然就能实时刷新了。那么问题来了,根据问题现象来看是每个连接有一个数据缓存,当连接关闭时清除(其实我试过,用该连接做一次更新操作也会清除缓存,但我总不能每次查询之前都更新一遍吧)。那么这个连接缓存是在数据库端还是在Connector C的lib库这边?应该怎么清除?或者说如何将这个连接的缓存设置成跟随表的变化而清空?不要说放弃长连接,因为数据库是远程的,经实际测试,长连接读写比每次现连接要快很多;也不要问我为什么要远程连接数据库,因为架构不是我做的
还请各位大牛指点迷津,怎么能解决这个问题,感激不尽啊!