Oracle-10g
Oracle 10g 第一次查詢性能慢
我們有一個我們最近升級的應用程序,並且存在性能問題。任何想法將不勝感激。
主要問題是打開視窗需要很長時間(分鐘),因為填充列錶框的初始查詢需要很長時間。使用者第二次打開視窗很好。
我們希望這是應用程序記憶體,但我們不這麼認為。我們在使用 Crystal Reports 和使用命令行 SQL 查詢時看到了類似的問題。
我們增加了數據庫可用的 RAM。
我們業務的另一部分具有相同應用程序和數據庫的稍微不同的版本,並且沒有遇到這個問題。
完成查詢的時間對於會話中的第一次可以是 30 分鐘,對於後續執行可以是 30 秒。
此類問題的通常原因是查詢的第一次執行需要物理讀取以從磁碟中獲取所需的塊,而第二次和後續執行發現它們已經被記憶體。
您可以通過在第一次打開您所說的這些視窗之前執行 SQL*Plus 中的查詢(並對其計時)來測試這一點,以查看這是否會影響性能。
如果您可以通過 SQL*Plus 和應用程序執行查詢時比較時間,這將有助於進一步分析。
它首先需要更多時間的原因是因為 oracle 記憶體了結果。如果您更改 SQL,那麼 Oracle 會認為它是一個不同的查詢,並且不會從記憶體中提供結果,而是執行新的查詢。
這些影響甚至可能發生在索引掃描上,但在諸如全表掃描之類的昂貴操作上尤其嚴重(因為涉及到大量頁面)。
檢查您的查詢計劃,看看是否有任何可能涉及大量頁面的昂貴操作……
如何加快首次執行是一個難題。您需要發布解釋計劃,如果您想獲得幫助,您可能必須回答更多問題。
謝謝。