產生直接路徑讀的N種情況

老w愛db發表於2024-02-10
  1. 使用SQL*Loader: 當使用Oracle SQL*Loader工具進行大批次資料裝載時,預設會啟用直接路徑讀以提高資料匯入速度。

  2. ALTER TABLE ... ENABLE/DISABLE ROW MOVEMENT: 在修改表的行移動特性時,如果需要對整個表進行掃描,可能會觸發直接路徑讀操作。

  3. CREATE TABLE AS SELECT (CTAS): 當執行 CREATE TABLE AS SELECT語句且指定了 UNRECOVERABLENOLOGGING選項時,Oracle會使用直接路徑讀取源表的資料並直接寫入新建立的表。

  4. DBMS_STATS.GATHER_TABLE_STATS: 使用DBMS_STATS包收集統計資訊時,若指定了 ESTIMATE_PERCENT => 0引數(全表掃描),並且啟用了直接路徑讀取,則統計資訊收集過程可能採用直接路徑讀取資料。

  5. INSERT /*+ APPEND */: 當插入大量資料到表中,並且使用了 APPEND提示來繞過Buffer Cache時,Oracle會使用直接路徑讀將資料直接從資料檔案讀入並寫入新的資料塊。

  6. ALTER TABLE MOVE/TABLESPACE/COMPRESS/DECOMPRESS: 執行 ALTER TABLE命令中的某些操作,如移動表至新的表空間、壓縮或解壓縮表時,也可能導致直接路徑讀取和寫入。

  7. 外部表操作: 處理外部表時,Oracle有時會用到直接路徑讀取外部資料檔案內容。

  8. Data Pump Expdp/Impdp: 資料泵工具(Data Pump Export/Import)在匯出或匯入大容量資料時,利用直接路徑讀取磁碟上的資料檔案,從而避免Buffer Cache帶來的潛在瓶頸。

  9. Oracle Recovery Manager (RMAN) 恢復操作: RMAN在執行特定型別的恢復操作時,比如部分或完全恢復,為了提高效能,可能也會選擇直接路徑讀取備份集中的資料。

  10. 並行查詢最佳化: 在執行大規模並行查詢時,Oracle最佳化器可能會決定使用直接路徑讀取以減少鎖爭用和提高併發性,特別是在多使用者環境下處理大型表。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70021989/viewspace-3006621/,如需轉載,請註明出處,否則將追究法律責任。

相關文章