请教个数据入库的问题,数据量感觉有点大

色郎中 2017-04-12 10:43:55

写段代码,分析文件夹内的文本文件,每秒产生一个文件,每个文件大概500-1000条记录,简单分析一下,将每条记录存入数据库;
按最低记录数算 500条,一天下来也有5000-6000W条记录了:

处理过程:在一个线程里处理文本文件,分析文件后,将500条记录,一次性也在线程里插入数据库,程序跑一段时发现后,感觉本本抗不住,文件夹里很多文件来不及处理;
大概如下的样子;

json= parsing_files(currentFileName) //保存处理一个文本后的500条记录
db_handle.write_points( json)//调用库函数,写数据库


分别测试,只分析文件,并生成json(类似一个文件,即将文本文件分析过后的500条记录存一个json里),不做插入数据库操作,发现CPU, 内存,磁盘IO 都变化不大;
但是,调用库接口函数做入库操作,跑一段时间后,发现CPU,内存基本都给占用了

请教一下有啥的办法,分析文本 和 入库操作分开? 处理的结果放队列,然后,开新线程做入库? 或者其他




...全文
272 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
色郎中 2017-04-15
  • 打赏
  • 举报
回复
调整后,用个淘来的03年本本,1G 内存 哈哈,跑都OK 哈哈
色郎中 2017-04-15
  • 打赏
  • 举报
回复
谢谢各位 是数据库的问题,或者说自己对数据库特性不了解,经过再次确认,调整索引值大小后,表现比较平稳了,占用基本变化不大 开源的数据库,,仔细看了官方文档,索引值的乘积大于一定数量,占用资源直线上升,最后数据库就挂了
wang_peng_yl 2017-04-13
  • 打赏
  • 举报
回复
按你现在说的,存储都是问题,就算分析插入都没问题,一个月下来多少亿数据啊。建议:分析那不要用转json了,为啥要转呢,数据库可不认识他,插入时还得对json处理。直接形成sql语句跳过转json,存储肯定要分库分表了,具体用什么框架,有很多,我就不推荐了容易误导。
xuggzu 2017-04-12
  • 打赏
  • 举报
回复
数据库操作涉及硬盘IO操作和线程同步问题,而且入库数据量大,更影响时间。建议:使用高速接口硬盘,比如固态甚至M.2固态硬盘,以尽量减小IO操作时间;编码方面尽量采用批量入库方式,减少同步处理和IO交互次数。
by_封爱 版主 2017-04-12
  • 打赏
  • 举报
回复
读取解析插入 都丢给线程池就行了吧?
stherix 2017-04-12
  • 打赏
  • 举报
回复
1秒钟添加1000条记录 理论上应该是可以承受住的 还是数据库接口有问题或者数据库本身性能不行吧
songbing774933 2017-04-12
  • 打赏
  • 举报
回复
你不是都测试出来了吗 最根本的,还是应该解决入库接口的性能问题
Mooyi_水 2017-04-12
  • 打赏
  • 举报
回复
批量入库正解
引用 4 楼 xuggzu 的回复:
数据库操作涉及硬盘IO操作和线程同步问题,而且入库数据量大,更影响时间。建议:使用高速接口硬盘,比如固态甚至M.2固态硬盘,以尽量减小IO操作时间;编码方面尽量采用批量入库方式,减少同步处理和IO交互次数。

110,536

社区成员

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

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

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