解析非常高,通過時間模型可以看到解析占比非常高
解析大致可以分為硬解析( hard parse)、軟解析( soft parse)和軟軟解析( soft soft parse)。如,執行一條 SQL 的時候,如果該 SQL 在共享池中不存在,這就是硬解析,需要首先分配共享池空間,創建父游標的結構,然后創建一個子游標。如果下一次再執行一條類似的 SQL,該 SQL 的父游標存在,經過檢查發現子游標是可以共享的,而且這個子游標的所有關聯對象在共享池中都存在,那么就可以馬上執行了,這就是軟軟解析,也是軟解析的一種。
以下語句解析次數較高:
如果子游標是不可共享的,那么就需要創建一個新的子游標(對于 SQL 來說,又增加了一個版本, Version),解析執行計劃,然后執行。所以說,version_count 表示這個父游標下子游標的數量。當游標有多個版本時,在sql執行時會查找正確的version,等待的時間就會越來越長,會造成數據庫性能問題。部分語句version_count值較高。
可以看到特別第一個,執行2000多次,但version_count達到3000多,說明每執行一次sql要找到正確的version甚至有可能要達到3000多次,這會嚴重影響sql的執行效率。