我用的entity framework插入数据库,前面几千条几秒就好了,越后面越慢
追答没用过这个,我读数据都是用流读的
追问我也是用流读,今天读取一个TXT文档,开始几千条很快,不过越后面读取越慢啊
追答你是也是先读到缓存中然后才存到数据库的吧
追问我是用readline一行一行读,然后把每行split分成几部分,每行是一条数据插入数据库中,几万条用了几十分钟
追答我推荐的是就是把数据读取到缓存中然后再存到数据库
原因:缓存的目的是为了避免重复计算,特别是对一些比较耗时间、资源的计算,也可以减少HTTP访问
工作原理:
硬盘把数据调到硬盘缓存,内存从硬盘缓存读数据,然后传输到cpu的缓存,cpu从多级缓存中读数据,内存就是一个数据中转站,因为cpu读取速度远远大于硬盘,内存的速度是很快的,通过内存这个桥梁来提高cpu读取数据的速度!
循环几万次很费时间啊
追答你先试一下速度,如果确实读取速度很慢(其实我感觉几万行应该还好),那就要试多线程了,也就是同时开几个线程,每个线程读取一部分行(比如第一个线程处理0-5000,第二个为5001-6000,这只是举例,具体开几个线程要视具体情况),存到各自的比如List里,完成之后再将这些list添加到Datatable里。
追问我已经解决啦
本回答被网友采纳