首页新闻找找看学习计划

两千万数据的读写问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2017-02-15 10:21

sqlserver2012 有一张表【文献表】【ID,摘要,标题,关键字】,两千五百万数据,现在需要把每条数据取出来,然后

1、根据合适的规则判断下,判断后给文献添加上【一级类别,二级类别】,一条文献可以归属到多个类别。

2、根据其他规则判断,文献数据是否是某些疾病的指导文献,若是给文献【添加疾病ID】【疾病名称】,一条文献可以是很多疾病的指导文献

3、现在单条文献的判断大约是100毫秒【Dll封装好的】,只要该文献含有类别,或含有疾病,就把该文献插入到新新建的Paper数据表中

想用多线程做这个功能,求大神指导

青龙入海的主页 青龙入海 | 初学一级 | 园豆:53
提问于:2016-11-21 13:03
< >
分享
所有回答(6)
0

你这里用多线程做读写应该也不会有太多性能提升,建议一个服务单独做读取,读取了后直接写入队列,另一服务(可部署多个实例)从队列中抽数据分析后进入另一队列,然后由单独的服务入库。

这样既保证读写性能(读写速度远大于你分析速度),同时又能最小化分析这个过程的的开销(如果具体分析的过程还是访问数据,建议对这块单独做优化)。而且横向扩展能力好。

Daniel Cai | 园豆:10374 (专家六级) | 2016-11-21 13:21

windows服务?

支持(0) 反对(0) 青龙入海 | 园豆:53 (初学一级) | 2016-11-22 11:03

@青龙入海: 服务拿什么做宿主随便,不过windows服务维护起来比较方便。

支持(0) 反对(0) Daniel Cai | 园豆:10374 (专家六级) | 2016-11-22 11:41
0

看这意思,大多是写操作啊?所以再多线程,查询数据库的瓶颈也在那呢。。。

顾晓北 | 园豆:9520 (大侠五级) | 2016-11-21 13:36

那怎么办呢?

 

支持(0) 反对(0) 青龙入海 | 园豆:53 (初学一级) | 2016-11-22 18:51
0

一次性操作的,没必要用多线程吧。每次取个10000条,用不了几次就搞定了~

幻天芒 | 园豆:36522 (高人七级) | 2016-11-22 08:56

这样就是要分页了,但是表数据没有添加索引,我只能读取,所以我觉得你说的不靠谱

支持(0) 反对(0) 青龙入海 | 园豆:53 (初学一级) | 2016-11-22 18:51

@青龙入海: 没索引,不知道加么?觉得影响写入,跑完job再干掉就是了。。。

你用得好,就靠谱;用不好,那就换其他办法吧。

支持(0) 反对(0) 幻天芒 | 园豆:36522 (高人七级) | 2016-11-23 13:08
0

你这个的瓶颈在于数据库,又不在内存和CPU,多线程意义不大的。

爱编程的大叔 | 园豆:29788 (高人七级) | 2016-11-22 11:55

应该怎么办呢?

支持(0) 反对(0) 青龙入海 | 园豆:53 (初学一级) | 2016-11-22 18:51

@青龙入海: 这个就是一次性的工作,难道你还天天nong这事不成?

一次性工作你优化个半死也没用。

有钱就买好的CPU,好的内存,好的硬盘,速度自然就快了。

支持(0) 反对(0) 爱编程的大叔 | 园豆:29788 (高人七级) | 2016-11-22 20:42

@爱编程的大叔: 不是一次性的  三个月要重新跑一次,文献数据、疾病数据、文献类别数据都是不断增加

支持(0) 反对(0) 青龙入海 | 园豆:53 (初学一级) | 2016-11-23 08:45

@青龙入海: 

1、设计上是否可以避免这事,也就是说从源头修改。

2、三个月就是一次性的,我说的频繁是指一天几百万次的,这才叫多次。

不然最起码一天得有几万次,要不然就没有意义了。

3、没有不需要成本的解决方案,

要么请好的程序员,要么多花时间写软件,要么多花钱买硬件。

自己看着办吧。

支持(0) 反对(0) 爱编程的大叔 | 园豆:29788 (高人七级) | 2016-11-23 10:00
0

如果一定要遍历 不会有什么好的提高性能的办法 怎么地 所有的数据都要执行一遍

小眼睛老鼠 | 园豆:2774 (老鸟四级) | 2016-11-25 18:10
0

这个还要问吗?兄弟。

你写成过程程序,用shell启动加入参数不就OK了;

或者你写一个处理文件逻辑的程序A。

另外写个程序B,在B中使用Process启动A的线程,加入参数就OK。

 

 

小尧弟 | 园豆:500 (菜鸟二级) | 2017-03-02 13:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册