文章目錄
  1. 1. 直接储存
  2. 2. 定时存储
  3. 3. 定时加分时存储
  4. 4. 分时存储

一般在项目中总是会遇到需要把数据储存到数据库的情况,下面就讨论下存储方案。

直接储存

最简单的当然是直接存储了,当数据变化的时候直接插入或更新数据库,但当数据量很大或者数据变化频率很快的时候数据库压力太大,不妥。

定时存储

当数据变化时并不立马更新数据库,而是先把数据存在内存里,打上标识,当到了一定的时间间隔之后再一起存储,这样数据库操作就不会太过频繁,但当该时间间隔内需要更新的条目太多的话也会造成数据库的阻塞。

定时加分时存储

大体就是设置个定时器五分钟做一次整体的数据库更新,到了更新点的时候检测需要更新的数量,如果更新量比较大,好比需要更新1000条数据,这时候就把定时器设置成5秒,然后每5秒更新100条数据,当50秒过后再把定时器设回五分钟,如此循环。
这样就保证了数据更新不至于太频繁的同时,也保证了同一时刻对数据库的操作数量很小。

分时存储

设置个5秒的定时器和一个multimap记录该时刻变化的记录,每5秒检测multimap,如果time>currenttime+5分钟,则把该条目更新到数据库,并从map中删除,必要的时候可以设定每5秒钟最多更新的条目数,多余条目放在下个5秒内。
这种方案咋一看和上个方案差不多,都是每5分钟更新数据,并把5分钟的数据分配在每5秒钟里面去更新,但是仔细会发现这种方案比上个方案的更新分配更加细致,在5分钟之类分配的更加均匀,而上个方案更新只集中在了5分钟后面临近几个5秒里了。
如果要说缺点的话,就是这种方案定时器比较频繁。

总的来说,要采取哪种方案要根据实际项目需要来安排,一般来说后面两种比较好点,适应性比较强。
代码就不上了,有了思想代码写起来简单。

文章目錄
  1. 1. 直接储存
  2. 2. 定时存储
  3. 3. 定时加分时存储
  4. 4. 分时存储