你需要经常干这事?在我的想象中,这事一年干个一次差不多了。一次花个三五天也没有问题啊,看数据量。
如果需要经常干,比如,那应该也只有第一次数据多点,后面应该只是增量备份吧?
性能差是指备份数据慢,还是指影响到数据库服务器的正常使用,这两个可是要使用完全不同的解决方案的。
如果你的服务器是生产服务器,肯定性能要受其他应用的影响。
如果是脱机服务器,内存多点,CPU好点,硬盘好点,本机备份而非通过网络备份等都可以加快备份的速度的。
现在是 导出个几万条数据 都卡个二三十分钟都完不了 肯定是我写的代码有问题。所以想问问 我上边的思路有什么 需要改进的地方?
@差生:几万条数据,也得看是不是数据里面的字段内容多少啊,你别里面有个图片,那就可怕了。
如果是普通的文本的话,20~30分钟几万条数据确实不应该,有这个时间,差不多可以导出500M以上的MDB了,这时候基本上MDB也快爆了。
如果只是要数据,不要求可还原啥的,将ORACLE数据弄到MDB里面,其实不需要编程的,用ACCESS直接就可以导入ORACLE的数据表(包含数据)的。
如果是编程,你提供的信息不够,有可能代码里面有哪一句性能特别差的。
@爱编程的大叔: 可以加你 Q 帮下我吗 ?
@差生: 一般不加Q的,你的问题离我太远。
如果可以,你完全可以把问题代码完整贴出来让其他高手看看的,比我厉害的比比皆是。
@爱编程的大叔: 嗯 ,那你能告诉我 读取 和 插入的时候应该注意些什么吗? 比如在数据库链接问题上,还有 这个有必要用异步来提高性能吗?
@差生: 相对于数据库来说,代码的性能应该是更高的(除非写得很差)。
瓶颈应该是在数据库服务器,所以多线程(异步)只会增加复杂性,个人感觉没有必要。
在代码读取及赋值上,你可以考虑使用AUTOMAPPPER之类的工具(AutoMapper性能还是比较差的,
如果你很在乎性能的话,好象有其他的MAPPER工具性能方面很不错)
你可能就是在数据读取-赋值这块上出问题了。
另外MDB数据文件大了也容易出事。
@爱编程的大叔: 应该是的,读取都用的datareader,每个表的数据操作都用了自己独立的datareader 用完就关了 操作下个表的时候又开的。 插入就是 在while(datareader.reader()){ insert into tablename (列1,2,3...)values(值1,2,3...)}这样的
显示打开事务
像你这个应该分页取出数据,报错时把错误异常信息写在日志里面,根据日志再下载数据。