缓存是要有粒度划分的,你这样将整个库作为缓存单位,这个问题就没法解决。以记录为单位缓存,或者以需要的逻辑将若干条记录作为一个单位进行缓存。
每10分钟需要把这15张表的内容从数据库中update到内存中
这个是为了同步数据?
update的过程中有request,只能让request等待 update 操作完成。
数据量这么大的话,除了第一次写入内存比较多之外,其他的时候没必要重新写入相同的数据。
你可以写个触发器之类的,数据变更之后,自动的更新内存中的数据,如果每一次都全部重写,肯定很慢而且没必要这么做。
update时是只update不同部分的,实时性比较强不考虑等待,正在考虑用深复制,hot swop。谢谢。
@澍可: 你用C++写的。。 这方面就不懂了。
@澍可: 大数据,建议你问问dudu站长
@二十三号同学: 没有用C++呀,哪里体现出来用C++了。。。。
@澍可: 能不能截个图或者打个比方描述一下你的需求,或许解决思路需要调整调整,不一定是技术有限就不能解决。
为什么不在update数据库记录的同时直接更新内存中对应的数据?
业务比较复杂,update数据库记录的系统和我这个不是同一套系统。每次update内存中的数据大概用10秒多,lock的话对用户是不可忍受的,我考虑是不是可以复制一份数据,update的时候就让request先用这个副本,update完成后request来了再用最新数据再把副本里的数据更新的最新。这样做的话该怎么做呢?
@澍可: 无法想像,update内存中的一条数据记录要10秒多
@dudu: 哈哈,是update内存中的这10G数据,有时候0.08s,有时候10s,时间不一定的,要看有多少数据发生了变化。谢谢大家的意见,已经有了解决方案。
@澍可: 问题是如何解决的?
更新数据的同时把原来的内存中的数据过期掉,或者同时更新,我比较倾向于过期掉。