Oracle

Oracle 數據庫中的優化器如何使用 I/O 統計資訊?

  • May 10, 2018

我想幫助 Oracle 的查詢優化器做出更明智的決策。我一直無法找到關於優化器如何確定 I/O 操作成本的更多資訊,除了無源說明它使用檢索單個數據塊所需的時間。以下是我想知道的一些事情:

  1. 是否可以查看優化器目前使用的 I/O 基準?
  2. 是否可以觸發這些基準的更新?
  3. 優化器是否考慮了操作的目前I/O 成本?例如,如果儲存設備上的並發負載很大,導致性能下降,是否考慮到 I/O 的相對成本會暫時變高?
  4. 優化器是否考慮延遲/隨機訪問性能與吞吐量/順序性能?
  5. 如果您在具有不同性能特徵的多個儲存設備上擁有數據文件,優化器是否有並應用了特定於設備的成本?
  1. 您可以在 中查看目前使用的統計資訊SYS.AUX_STATS$
  2. DBMS_STATS.GATHER_SYSTEM_STATS收集系統統計資訊。執行它將gathering_mode='NOWORKLOAD'擷取伺服器的 IO 相關統計資訊。您通常也會在工作負載下執行它(“START/STOP”、“INTERVAL”)。
  3. (4,5) 在典型負載期間收集系統統計資訊應該可以解決您提到的潛在問題。另外,(4)會受到優化器模式(ALL_ROWSvs FIRST_ROWS) 的影響

此外,通過dbms_stats包中的過程,可以多次收集統計資訊,導出 ( EXPORT_SYSTEM_STATS)、導入 ( EXPORT_SYSTEM_STATS) 或刪除它 ( DELETE_SYSTEM_STATS)。

我沒有任何真正的答案。我主要有一些關於你可以去哪裡尋找更多資訊的指針。

查看 I/O 統計資訊 (1)

您可能會喜歡這個網址:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/r1/poster/OUTPUT_poster/poster.html#

看來 Oracle 在 V$FILESTAT 中保留了“往返”資訊。

更新 I/O 統計資訊 (2)

Oracle ORION 是我首先想到的。快速搜尋後,似乎有一個 DBMS 包可以更新 I/O 統計資訊。

https://oracle-base.com/articles/misc/measuring-storage-performance-for-oracle-systems

問題 3 和 4

我只有自己的想法和推理。

SAS 與 SATA (5)

“不同特徵”的概念對於 Oracle 數據庫並不陌生(至少,不在文件中)。12c 的ILM子句允許您自動將數據從 ASM 磁碟組[+SAS]上的表空間移動到 ASM 磁碟組上的表空間[+SATA]

但是,我不會在同一個表空間中混合具有不同特徵的文件。

磁碟碟片的內部/外部部分

ASM 似乎有能力區分這些。我會查看文件。

https://docs.oracle.com/database/121/OSTMG/GUID-857680CA-35B0-4C88-9DF4-55537C8F1B7C.htm#OSTMG13790

引用自:https://dba.stackexchange.com/questions/206394