为了提高数据及时性,需要每次提交都CHECKPOINT吗?
仙侣步惊云 2015-03-25 11:15:07 以前做一个CS系统,有很多终端同时更新数据,例如有50个终端同时更新大量财务数据,每笔数据都是很小的,客户端提交到数据库时,会发现出现数据莫名丢失的现象,例如客户端明明在一个小时内共计更新了6000条记录,结果从客户端只能查询到5992条记录,另外8条记录却不见了,但如果全部客户端全部退出登录,则可以查询到全部记录,真要命!
后来才知道,客户端数据提交时只是保存在数据库服务器的缓存中,并不会立即更新,只会在系统设置的一个固定时间片只(例如30秒)提交给数据库磁盘文件内,而从客户端查询的数据,只是从数据库磁盘文件中取出数据查询,并不会把缓存中的记录算在内,所以,一边在大量更新提交数据库,一边要及时查询了解更新情况,如果不知道还有许多记录在缓存中而去查询,你将得到根本不靠谱的结果,特别是金额计算,根本就是错误的!
我是这样解决的:强行让数据库提交,每次提交后都CHECKPOINT一下。
为何数据库设计者这么不小心,导致数据这样不可靠,难道我的理解有误吗,不知数据库高手还有什么别的办法?