实时大量收入数据,怎样存储比较好

mpilove 2013-12-20 03:41:21
开了一个线程,大概1ms收一帧数据,都是放到一个arraylist里,然后在退出时存到数据库,大概30秒就6万行数据了,于是全都卡住了,高手提供一个思路,怎么整比较合适
...全文
417 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
开两线程,一个接收数据,放到 ARRLIST, 一个去ARRLIST 取出来 插入数据库,插完 把这条删掉。
by_封爱 版主 2013-12-20
  • 打赏
  • 举报
回复
线程池 不解释,最合适的做法.其他感觉都不行
PandaIT 2013-12-20
  • 打赏
  • 举报
回复
做成消息队列 让服务器慢慢处理!
rtdb 2013-12-20
  • 打赏
  • 举报
回复
写文件和写数据库比, 一次一条的数据库快, 一次一万以上的话,数据库就比不上直接写文件了。
wb_han 2013-12-20
  • 打赏
  • 举报
回复
可以用数据库事务去处理批量数据,效率会提高很多
  • 打赏
  • 举报
回复
半分钟6万条相当是一秒2千多条,其实也不算是很多,你如果觉得数据库有压力; 可以做一下数据库集群,当然得有设备,多开几个线程跑跑看; 如果是用的ADO.NET可以考虑使用SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
mpilove 2013-12-20
  • 打赏
  • 举报
回复
我这运行一次最多也就半小时吧,收来的数还要转换显示,各画个实时曲线啥的,不能只存数哈
mpilove 2013-12-20
  • 打赏
  • 举报
回复
我怎么以前试过写text文件比写数据库还慢呢,当然那是实时写的,发一行写一行 按这个方法,达到一定数量再开一个线程存数,不会影响我收数的主进程吧? 或者再建一个arraylist,开个线程存这个arraylist的时候,就把数存到那个arraylist里,然后那个满了再存那个,大概到多少行的时候合适啊,而且存到sql真的有点慢
gw6328 2013-12-20
  • 打赏
  • 举报
回复
你这个数据太大了,尽量先不做处理,直接存数据库,30称6万条 一天都上亿了.
卧_槽 2013-12-20
  • 打赏
  • 举报
回复
arraylist满了就扔给另一个线程去写到文件里。后台再来个服务发现有相应的文件就存到数据库。这个服务可以独立于你的接受程序,这样无论数据总会存到数据库去的。
rtdb 2013-12-20
  • 打赏
  • 举报
回复
量很大,数据库也不一定反应过来, 写文件吧,arraylist收数据,够一定数量就pass给一个线程去写文件, arraylist本身清空,继续收数据。
mpilove 2013-12-20
  • 打赏
  • 举报
回复
这样会不会丢失数据啊?先放到队列,然后放到arraylist里,这个arraylist肯定不会丢数,我想达到以一定行数肯定要清空一下arraylist,可是存到sql又超慢的
敌敌畏耶 2013-12-20
  • 打赏
  • 举报
回复
为什么不一边接受一边存入数据库呢?

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧