lj_w 2016-04-10 14:27 采纳率: 0%
浏览 1910

TCP接收数据,频繁操作数据库怎么解决?

1.数据库存储问题
由于tcp不定时不间断的上报数据,1秒10条左右,这样高频率的操作数据库一定是不合理的,那怎么来解决问题呢。
ps:我用TCP收集上报上来的ip地址(源IP+目的IP),如果已经存储了就更新访问次数,如果源源ip没有存储,就新增,一次会有多条源IP+目的IP;
我的想法是把处理逻辑放到存储过程中实现:
(1)数据进入临时表
(2)存储ip的A表与临时表通过sql比较,相同的插入,不同的更新访问次数。
(3)将A表的源IP过滤重复,生成一个新表,用于业务需要。
现在的效率是调用一次存储过程花费的时间是400ms左右,1秒可以存储2次。而存储过程的接口是可以支持批量插入的。所以需要一个缓存,把收集的记录缓存起来,批量执行效果更好。
但是,需要考虑几个问题:
1.缓存大小,根据存储过程一次执行批量更新的大小
2.执行存储过程的时机,2种情况,
(1)缓存达到限定大小。
(2)一段时间检查缓存是否有数据未提交。
(3)同时操作缓存问题。
批量执行没有实现,可以尝试一下看看,效果。

  • 写回答

4条回答 默认 最新

  • Dai444026042 2016-04-10 14:32
    关注

    是不是可以在程序中做一个缓存 达到一定数据量 或一定时间间隔才提交一次 不知道对时效性有没有要求。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器