SQL語句連軟解析都可以避免?

wei-xh發表於2010-05-31
最近在讀Troubleshooting Oracle Performance。裡面有段話,百思不得其解。見紅色字型部分。

From a performance point of view, you should avoid hard parses as much as possible. This
is precisely the reason why the database engine stores shareable cursors in the library cache. In
this way, every process belonging to the instance might be able to reuse them. There are two
reasons why this leads to high costs for hard parses. The first is that the logical and physical
optimizations are highly CPU-intensive operations. The second is that memory is needed for
storing the parent and child cursors in the library cache. Since the library cache is shared over
all sessions, memory allocations in the library cache must be serialized. In practice, one of the
latches protecting the shared pool must be obtained before being able to allocate the memory
needed for both the parent and child cursors.
Even if the impact of soft parses is much lower
than that of hard parses, it is desirable to avoid soft parses as well because they are also subject to some serialization.
In fact, to search for a shareable parent cursor, you must obtain one of
the latches protecting the library cache. In summary, you should avoid soft and hard parses as
much as possible because they inhibit the scalability of applications.


紅色部分的意思:即使軟計息比硬解析的影響小,但還是應該儘量的避免軟解析,他們也會導致序列化。

一條SQL語句,沒有硬解析的情況下,可以避免軟解析?我一直理解的是,SQL語句要不硬解析,要不軟解析?莫非還可以不解析嗎?請大俠賜教啊。

[ 本帖最後由 wei-xh 於 2010-5-25 23:15 編輯 ]

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

相關文章