2014-09-23 77 views
4

我正在开发基于Oracle数据库的产品的API,我尝试使用ruby-oci8 gem,但是我遇到了一个奇怪的问题 - OCI8.new非常慢,需要1,2-1, 5秒钟连接到数据库。ruby​​ OCI8缓慢初始化

例如:

~ mmulev$ irb 
2.1.1 :001 > require 'oci8' 
=> true 
2.1.1 :002 > def test 
2.1.1 :003?> t0 = Time.now 
2.1.1 :004?> OCI8.new('SCHEMA', 'STRONG_PASS', '//db_host:port/service_name') 
2.1.1 :005?> Time.now - t0 
2.1.1 :006?> end 
=> :test 
2.1.1 :007 > test 
=> 1.217809 
2.1.1 :008 > 

在PHP(oci_new_connect)同样的事情需要大约0,1-0,2第二,建立连接,并退回处理程序。

除连接池外还有其他解决方案吗?

P.S.红宝石API代码是由method_profiler和基准异形,甲骨文N - 11克

+0

您是否使用完全相同的PHP连接字符串?你的客户端上有多个'ORACLE_HOME'吗? – 2014-09-23 20:23:33

+0

当然,使用[n-tier](http://en.wikipedia.org/wiki/Multitier_architecture)设计,并从ruby(或php)连接到您的中间层。当然,您的中间层可能需要一个连接池才能以良好的性能连接到您的数据库。 – 2014-09-24 00:25:16

+0

@ frank-schmitt,连接字符串是一样的,ORACLE_HOME只有一个 – 2014-09-24 04:32:35

回答

-1

您也可以使用这个宝石连接到oracle

https://github.com/rsim/oracle-enhanced

确保您已经安装了Oracle正常,你可以安装这个通过以下链接:How to install ruby-oci8?

+0

这是如何回答这个问题的?这个宝石似乎是一个围绕ruby-oci8的ActiveRecord包装 - 如何使用它比普通ruby-oci8更快?使用oracle-enhanced gem的 – 2015-03-05 11:35:02

+0

可以轻松配置您的rails应用程序并查询数据库。如果数据库读/写变慢,那么你可能不得不索引一些领域或数据库的其他问题:) – Ranjith 2015-03-05 12:43:34

+0

对不起,但这是完全不相关的问题。 OP完全没有提到Rails(* Ruby!= Rails *),创建索引当然不会*加速登录到数据库。 – 2015-03-05 14:27:48