一般,Oracle对SQL的解析包括两部分工作,
1. 检查SQL语句书写的是否正确,有没有语法错误。
2. 生成一个用来执行该语句的查询计划。
硬解析发生在一个SQL语句被加载到共享池中。这种情况下,Oracle在共享池中分配内存,并解析语句。每次一个特定的游标被解析,这个解析数就+1。有一些特定的操作将会导致SQL游标被解析。解析SQL语句分为几个原语步骤,为游标产生执行计划时,优化器会进行衡量。
为了执行一个硬解析,Oracle使用比软解析更多的资源。
软解析资源包括CPU和LIBRARY CACHE.
硬解析资源包括CPU,LIBRARY CACHE ,共享池
硬解析超过100 per second,说明系统存在高硬解析的情况。高硬解析将会导致严重的性能问题。一般来说,高解析率伴随着共享池的锁存和library cache的锁存。
软解析超过300每秒,意味着高软解析。不必要的软解析也会限制应用程序的可测性。最优的状态是,一个session中sql语句软解析一次,执行多次。
参考:《Database Performance Tuning Guide and Reference》、《Oracle 9i DBA 101》