2014-03-04 32 views
-2

我們有一個Microstrategy/Oracle安裝程序,它有一個包含500億行(即50,000,000,000+行)的事實表。Microstrategy/Oracle - 性能低下

系統性能非常不穩定;有時它運行良好,但在其他時候它很慢,即簡單的報告需要20分鐘才能運行!

最奇怪的部分:如果我們添加更多的約束到一個報告(即更多的where子句),最終在LESS數據回來,報告實際上進一步放緩。

我們能夠從Microstrategy中獲取SQL,並且我們發現SQL本身的運行速度也非常緩慢。但是,由於SQL是由Microstrategy生成的,因此我們對SQL沒有太多的控制權。

有關我們應該在哪裏看的任何想法?

+1

目前尚不清楚,如果相同的查詢始終一貫地運行,或者如果你表現的變化,當一切都沒有發生明顯變化。 OEM的顧問可能會指出瓶頸。否則,從生成的SQL的執行計劃開始,看看它們是否指向錯誤的選擇,缺少索引等。在不瞭解數據或查詢的任何內容的情況下,基本上不可能猜測可能有什麼幫助,除非您的統計數據剛剛過時。 .. –

+1

我很想說,你應該看看DBA的工作或兼職網站。除此之外,您可以先爲最擔心的查詢生成計劃並嘗試確定瓶頸。如果您說同一份報告有時可能運行得更快或更慢,請查明系統運行速度較慢時還會發生什麼。 – mustaccio

回答

2

查看SQL並查看是否可以添加更多有用的索引。檢查查詢是否使用了您認爲應該是的索引。

1

檢查每個被過濾的列都有索引。 請記住更新所有涉及表的統計數據:對於表如此之大非常重要。 看看查詢計劃,並檢查大桌子上沒有桌子掃描(你可以在小查找桌上接受它們)

-1

如果你的環境和我的一樣,那麼我會提供什麼可以幫助你的請求if不是它可以幫助別人。我們也有這樣一個表格,經過數週試圖添加此索引或該索引的最終解決方案是在表格和索引級別設置平行。

報告運行時間25分鐘 alter table TABLE_NAME parallel(degree 4 instances 4); 改變索引INDEX_NAME平行(4度4級);

報告運行時間6秒。

有一個表並行設置的標準,比如必須大於1G,但是使用並行線程來獲得最佳時間。

0

在ODBC驅動程序EnableDescribeParam=1