2014-09-23 75 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