occi是oracle提供的C++开发接口otl是开源的项目,也是C++访问数据库的,但支持多种不同的数据库,比如:db2, sqlserver, timesten,...
1) 在性能方面,occi vs otl谁强?
occi有一个executeArrayUpdate(), 在批量更新时效率很多,otl有对应的功能不? otl_stream的buffer size可以对应到update不?2)
谁在项目中用过otl, 并且项目成功?3)
想用otl同时访问oracle(使用oci即native方式访问,而不是odbc),timesten(使用odbc方式访问), 可否做到?由于本人对 otl 和occi只是初步了解阶段,且没有时间去读otl的源码,所以请达人解惑,

解决方案 »

  1.   

    从一个指南中看到:注意对于SELECT语句来说,缓冲区的大小并不影响其执行时机。当otl_stream以SELECT语句实例化,并设定好缓冲区大小后,一旦所有声明的绑定变量使用<<操作符被绑定完成,该SELECT语句将被OTL流立刻执行,与设置的缓存区具体大小并没有关系。与此相反,对于INSERT/DELETE/UPDATE语句,缓冲区大小的设置将影响其执行时机。当缓冲区被SQL填满时,OTL流将自动刷新缓冲区,立刻批量执行缓冲区中所有的SQL。因此,当执行语句为INSERT/DELETE/UPDATE时,也应该根据需要合理设置缓冲区大小。
    --------------------------------------------------
    貌似OTL的缓冲区,INSERT/U/D, 相当于occi的executeArrayUpdate
      

  2.   

    学习中。。linux下装ORACLE11g装了2天,准备进军底层开发
      

  3.   

    个人建议,如果使用的是oracle9.2及以上版本,可以直接上OCCI,代码可读性强。效率也不差。库的稳定性也比较好。
    otl虽然效率也不错,但是如果使用不当,调试也颇为困难。
    至于timesten使用odbc,完全可以自己直接使用odbc API调用,比oci相关调用要简单多了。
      

  4.   

    这几天研究了一下,我的问题 3) 答案是YES但是用OCCI与OTL做了性能比较,从一张40W记录中的表中取数据,OTL设置缓冲区5000,OCCI设置prefetchcount为1000,结果occi的性能是otl的2倍以上。经过比较后,还是OCCI性能强很多,最终还是舍弃OTL了
      

  5.   

    OCCI近水楼台,如果效率还要慢些,有些说不过去。
      

  6.   

    最近写C++程序,遇到一个11gR2的BUG,郁闷中
    谁有metalink帐号,帮我提个问题啥?
      

  7.   

    这个。。你上itpub上,随便找个大侠,都有metalink帐号。
      

  8.   

    我开始用了OTL,感觉找到了一个库有了依靠,呵呵毕竟我是个新手,刚开始学习oracle。现在决定试试occi