硬解析耗費大量 CPU 與閂資源。若共享池有現成副本,可軟解析直接重用執行計畫與優化決策,極大降低開銷。匹配過程分兩階段:
V$SQL.HASH_VALUE、V$SQLAREA.HASH_VALUE 比對。EMP,執行 SELECT * FROM emp。EMP,執行相同文字。EMP 指向 SCOTT.EMP。EMP。四者 SQL 文字與 Hash 全同,但僅 C 與 SCOTT 可共用(指向同一物件)。A、B 各自硬解析。
即使物件相同,環境差異也會導致不同執行計畫,故不可共用:
/*+ FIRST_ROWS */ vs /*+ ALL_ROWS */。WORK_AREA_SIZE_POLICY、OPTIMIZER_MODE、NLS_SORT、CURSOR_SHARING 等。實驗:同一 SQL,改變 WORK_AREA_SIZE_POLICY 導致不同計畫,驗證環境敏感度。
此步驟最耗資源,強化「避免硬解析」的必要性。
SELECT * FROM emp WHERE empno = :b1,而非字串拼接。共享池匹配是「文字 Hash → 語義物件 → 環境參數」三重過濾。唯有三者皆同,才能軟解析。從開發端落實綁定變數與編碼規範,是提升軟解析率、降低硬解析風暴最具槓桿效應的手段。