2009-10-11 66 views
2

我在Sybase應用程序中使用Sybase 15,並且存在與嵌套連接相關的性能問題。我已經存儲了從2個表中選擇2列的過程,並比較了這2個表之間超過10列的平等。但是當我運行這個stor。處理結果需要40分鐘。我添加了「設置合併連接關閉」語句到我的proc的頂部,然後結果需要22秒。但我沒有那個需要更多的解決方案。我之前使用的是sybase 12.5,並沒有像這樣的問題,我的過程需要3分鐘的結果。Sybase 15性能問題

我將服務器配置與sp_configure在15和12.5之間進行了比較,sybase15服務器配置(I/O和內存配置設置)比sybase12.5服務器大。

信息:sybase15位於pc的系統資源非常好。

回答

2

我剛剛在工作中花費了14個小時來調試周末Sybase 15遷移引發的關鍵性能問題。

查詢優化器一直在爲我們制定一些非常奇怪的決定。

拿一個例子,

select a, b, c from table1, table2, table3 where ... 

create table #temp (col1 int, col2 int, ... etc) 

insert #temp 
select a, b, c from table1, table2, table3 where ... 

我們有良好的時間第一次運行,並不能得到它做的第二個實例是正確的決定,儘管進行了廣泛改造。我們甚至將查詢拆分爲臨時表格,但仍得到不尋常的結果。

最後我們對SET FORCEPLAN ON進行了一些查詢 - 這是在我們的DBA和Sybase聯機10個小時之後。該解決方案來自應用程序開發人員,而不是來自Sybase工程師的任何建議。

所以爲了節省一些時間,採取這條路線是我的建議。

+1

謝謝@polyglot。 「但是制定行動計劃」並不適合我。我有同樣的表現。現在,我正在嘗試其他方式,如連接順序。例如我寫了'select a.col1,b.col1 from table2 b,table1 a where ....',我的查詢需要9秒,但是當我寫入如'insert table3(col1,col2)select a.col1, b.col1來自table2 b,table1 a where ...'再次查詢需要40多分鐘。新的我必須研究插入語句,我認爲。 – Aykut 2009-10-14 11:32:54

+2

看看「設置計劃optgoal」命令。 默認值是allrows_mixed。但是最接近12.5的可能是allrows_oltp。我們有一些查詢使用allrows_oltp恢復到之前的或更好的性能。 allrows_mixed是allrows_oltp和allrows_dss的混合。 DSS用於決策支持系統 - 例如數據挖掘。 如果您正在運行經典的索引良好且合理標準化的數據庫,可能是因爲DSS查詢計劃確實不合適。 請注意,optgoal allrows_oltp可以是語句提示,會話「set optgoal」語句或使用sp_configure在數據庫級別設置。 – 2009-10-15 01:26:25

1

Sybase有效地重寫了版本15的查詢引擎,這意味着在12.x上運行速度超快的查詢可能會在較新版本上運行得慢得多,反之亦然。調試這種方法的唯一方法是將12.x查詢計劃與15查詢計劃進行比較,看看有什麼不同。

+0

謝謝伊恩。我已經比較了12.x和15的查詢計劃,令人驚訝的是,這兩個計劃沒有區別。 – Aykut 2009-10-12 08:00:30

4

和其他人一樣,我有同情心而不是真正的答案!我們發現一個問題,即ASE 15查詢計劃程序大量低估了表掃描的成本,同樣高估了使用聚簇索引的成本。這會導致合併連接成爲建議的計劃。禁用合併連接或設置allrows_oltp optgoal 有時會導致更好的查詢計劃。估計的成本仍然有限,但通過從表中選擇一個選項,查詢計劃人員可能會找到一個好的解決方案 - 儘管通過錯誤的分析。

ASE 15文件說,它有一套更清潔的算法,而ASE 12計劃者有一堆特殊情況。也許是一個特殊情況,說「如果你有連接中的聚簇索引列將比表掃描速度快」不會是一個壞主意...... :(

1

大家關心這個問題應該閱讀文檔:

http://www.sybase.com/files/White_Papers/ASE15-Optimizer-Best-Practices-v1-051209-wp.pdf

它有大約從Sybase 12移植到Sybase 15坦率的警告。

Quoteth:

...不要把ASE 15爲 「只是 另一版本」。正如我們將 想說的是,你可以在 簡單 升級和指向您的應用程序升級的服務器,在深度和數據庫的最 根本的地區之一 廣度變化,查詢 執行,必要一更專注於 測試方案。本文意指 爲您提供明確的事實 以及儘可能減少此012-工作的最佳實踐,儘可能多地實現 。

它繼續談論新的ASE 15查詢優化器,相對於OLTP查詢和DSS(決策支持系統)查詢。

但是,還有好消息:2009年3月,Sybase 15.0.3引入了兼容模式。請參閱下面的文檔:

http://www.sybase.com/detail?id=1063556

在此模式下,你不必分析查詢他們是否適合OLTP或DSS配置文件來決定。

+0

兼容模式更加麻煩(我正在反思)並完全避免。真正的解決方案是仔細檢查opt_goal設置是否合適。我們最終從OLTP和DSS查詢計劃中獲得了良好的性能,但是它們對於課程來說是馬匹。回顧我的建議,部隊計劃的建議存在一些缺陷,但在那個階段我們深陷褐色。關鍵在於考察各種優化參數和其他優化參數。 – 2011-01-25 22:36:21

+0

要繼續......對查詢計劃備選方案進行系統探索的Quest產品是用於評估有問題查詢的不同設置的極好探索工具。不幸的是,它根本不適用於大多數存儲過程包含的臨時表。 – 2011-01-25 22:39:45