2011-02-22 77 views
1

下列命令最適合做什麼?數據庫性能

  1. EXEC dbms_stats.gather_table_stats

  2. dbms_stats.gather_schema_stats

哪一個提高數據庫的性能?

+0

這些命令是相同的。 `EXEC`只是在SQL * Plus中運行該過程的一種方式;否則,您必須將該呼叫包含在BEGIN/END塊中。 – 2011-02-23 01:01:43

回答

5

它們都提高了數據庫性能(或者說,它們都收集統計數據,將被oprtimiser使用,並且可能會提高性能)。 GATHER_SCHEMA_STATS收集模式中所有對象的統計信息。 GATHER_TABLE_STATS僅用於一張桌子。您可以在the documentation中閱讀所有關於它們的內容。

3

兩者。都不是。依靠。

「數據庫性能」是什麼意思?在現有表格和索引上收集統計數據可以幫助統計數據過期。但他們不是一個神奇的項目符號,它將替代添加有用的索引供問題查詢使用。

在一張桌子上更新統計數據可能就是您所需要的所有問題。 更新所有索引列上的統計數據可能是按順序排列的。 或者這些可能不是您從性能角度處理的問題。良好的索引無助於書面查詢。

你需要弄清楚什麼是特別慢,然後才能找出如何解決它。對於整個數據庫來說肯定沒有一個加速踏板 - 不管我們大家希望如何。

2

自從10g以後,Oracle會定期收集數據。你有沒有注意到標準聚會在你的案例中太稀少或者不夠詳細? estimate_percent < 100的默認值可能會導致10g中的計劃不正確。

  1. 看看你的應用程序,如果性能沒問題,你就完成了。如果沒有...
  2. 專注於您的應用程序所做的任務,以減慢並分解花費在主要貢獻者身上的時間。嘗試優化主要貢獻者。性能可以接受時停止。

統計數據收集可能是您將應用的優化之一,但我們無法預先知道。在增強Oracle的默認統計信息收集之前,您需要查找不適合使用手動收集的統計信息選擇的次優查詢計劃。

卡里米爾薩普本優秀論文可以幫助你:http://method-r.com/downloads/doc_details/44-thinking-clearly-about-performance