数据延迟入库操作,求大神给个技术思想
目前情况:
现在页面访问量比较大,然后要把访问的记录存入库中,想法是先把访问的数据存入到内存中,然后过一段指定的时间再一次性入库。比如把30秒之内的数据先存起,过了30秒后在进行入库操作。
问题:
用什么技术实现,性能比较高。主要不想频繁访问数据库,减少磁盘读写
------解决方案--------------------关注,坐等高手解答
------解决方案--------------------访问量大一般都是查询量大,写入和更新删除操作很少,可以使用全局缓存。
如果你想缓存插入和删除,这个估计有难度,因为你缓存了数据,没有写入,别人查询的数据都是脏数据了,会有数据错误的。
------解决方案--------------------我觉得再多加一个数据库好一点
数据先插入那个那个数据库,然后定时用JOB之类的同步进主数据库,不然放缓存的 丢失掉了就糟糕了
还有访问量大的话 可以适当的加上缓存减轻压力
------解决方案--------------------挫招,不知道管用与否,如果数据量小的话的,先存入缓存,设置缓存过期时间为30秒,然后插入数据库,你查一下缓存最大存储数据量;
如果数据量大的话,你可以做个临时表,存入数据,然后时间设置时间,时间到了把临时表的数据插入数据库
------解决方案--------------------消息队列 试试
------解决方案--------------------
先存入临时库或表中,高峰期过了,就同步到主数据库,存缓存的话,丢失就麻烦了
------解决方案--------------------再弄一个库,一般并发大的都会读写分离,然后指定时间段数据汇总
------解决方案--------------------缓存用反了,应该是把数据缓存到服务器,访问是访问服务器缓存,不影响写入
------解决方案--------------------加机器,做集群.
能用加机器解决的性能问题,不要改代码. 编码,测试,维护,风险统统算下来,加机器效果最好,最划算
------解决方案--------------------别动不动就加硬件。
这个问题很好解决,自己先使用单例模式创建一个保存访问信息的类。
然后,使用HttpModule来注册HttpApplication的某一个管道事件,
在事件的处理函数中,判断访问信息的状态,根据状态来选择插入数据库还是直接跳过。
------解决方案--------------------先写入到临时表。 然后定时将临时表同步到你指定的表里。
缓存也能实现.先缓存一部分数据. 后台一样定时去取cache的数据.然后写入
------解决方案--------------------楼上都说得差不多了,自己试试看吧