« ociuldr提速约25% »
Tools » http://www.anysql.net/tools/ociuldr_perf_big_improve.html 2009-03-19很早以前比较过ociuldr和exp的速度, 发现只能达到exp的50%的速度, 一直没有解决的方案. 但想想exp/imp等工具中的buffer参数, 猜测其作用, 就对IO这块优化了一下, 性能提升不少, 实测15GB, 7000万条的记录后, 这次的性能提升应当在25%左右, 现在可以达到75%的exp速度了.
新老两个程序的IO输出结构对比:
具体如何实现的就看源代码吧, 反正共享了. 能达到这个速度, 是可以用来做数据逻辑备份了, 因为sqlldr有driect模式, 比imp快多了.


buffer(1m)大小是否可以自定义呢?
再增加也提不了多少了, 要想其他办法才行了.
今天测试了一下,发现导出成固定长度时速度会慢一些.
于是再次调整了IO部份的代码,终于两个速度一样了. 如果导出的结果集中全部都是字符字段的话, 文本导出和exp差不多一样快了, 如果有比较多的DATE/NUMBER字段,则还是要慢一些的.
再次仔细检查了代码,又发现了可以优化的地方.
改了后,发现笔记本已经不能作为测试用机了,一导出磁盘一直就在响,得找台PC机或小型机测试一下了.
试试多线程,多BUFFER。。
SQL自动分片这块代码没有搞定, 后面的多线程, 多BUFFER没有多少意义的.