2010-06-17 79 views
0

我們在Silverlight,WCF,NHibernate中有應用程序。 目前它支持SQL Serve和Oracle數據庫。應用程序性能問題:SqlServer&Oracle

由於它是巨大的數據,它在SQL Sevrer上運行正常。但在Oracle上它運行速度非常慢。

對於一個功能,需要5秒執行SQL Server和30秒執行Oracle。我無法弄清楚會有什麼問題。

兩件事,我想與你分享我們的數據庫。

1)數據庫:包含一個基表包含類型的柱

SQLServer的:[文字]

甲骨文:[NCLOB]

2)我們的數據庫結構是過多歸一化。

可能在oracle中我使用了NCLOB,這是性能的原因。我的意思是我不知道它的細節....

任何人都可以請讓我知道是什麼原因? 或 我需要做哪些操作才能像SqlServer一樣提高性能?

在此先感謝。 Mahesh。

回答

0

首先,NCLOB和文本不是等價的。將NCLOB更改爲NVARCHAR2並再次嘗試您的測試。 還要確保在Oracle上有相似的索引以使測試公平。 Oracle應該像SQL Server一樣快速地執行。

確實,對於查找來說,完全標準化可能會很慢,因爲您可能必須在許多表上加入,但因爲只需插入到一個位置,因此可以快速插入。你必須取得平衡。分析你的數據庫如何被使用,並做出選擇。也許只是爲了獲得性能而對錶格進行非規格化會有所幫助。

我在公司數據庫中所做的工作就是創建一個迷你數據倉庫,在這裏我們保持核心表完全標準化,然後存儲過程完成了加入許多表的繁重工作,並將其數據添加到數據倉庫表。該網站現在非常快速,因爲它只是查看一張表中的數據。嘗試類似的東西。

0

正如Simon所說,將NCLOB更改爲NVARCHAR2,然後再進行測試。
如果不幫嘗試以下操作:

  • 檢查是否連接正確配置 - 在命令行中,TNSPING myserver。這將顯示您是否有網絡延遲問題。
  • 打開Oracle Enterprise Manager並轉到性能選項卡。在那裏你會發現幾個指標,可以告訴你瓶頸。見這兩個第一:
    • 檢查顧問中心對所有耗時的操作(不僅是SQL,但所有其他的問題,可以通過次優的配置引起的)
    • 檢查前的活動,看看哪些查詢使用大多數的資源 - 在那裏你會發現SQL,執行計劃和tunning建議

如果這沒有幫助,找到主管DBA。