barry_di 2018-12-04 05:26 采纳率: 100%
浏览 902
已结题

接收别人推送的数据,存入数据库 sqlserver

一个线程接收数据,存入list里,另一个线程从list里去数据入库,接收的快,入库慢,list里的数据一直在增加,内存最后被耗尽了,如何解决? 数据是行情数据,入库的先后顺序不能变

  • 写回答

5条回答 默认 最新

  • lstmsa 2018-12-05 06:46
    关注

    1、设置一个自增变量,接收一条推送数据自增1用于list自定义列,可以在数据库对应列增加对应唯一ID值并设置索引。
    2、随后开设几条线程,如3条线程,线程tag初值分别1、2、3,根据初值从小到大启动,每存一条数据自增线程数的值,3条增3,4条增4以此类推。
    3、sql在插入语句增加一个ID连续性的判断(if exists(select 0 from [tb] where ID=@id-1)...),插入前须存在ID减1的条目存在,否则delay若干毫秒后再插入,重复N次。
    你不在数据库设置ID也行,那就要判断每线程插入的ID是否是当前list最小值。
    4、每线程插入完成最后,删除对应ID的list条目。

    以上以供参考

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable