虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > Oracle数据库 > Oracle硬解析和软件解析

Oracle硬解析和软件解析
类别:Oracle数据库   作者:码皇   来源:<a href="http://blog.csdn.net/chao_19" target="_blank" rel="nofollow&quo   点击:

Oracle硬解析和软件解析,Oracle在执行目标sql时,在库缓存中找不到可以重用的解析树和执行计划,而不得不从开始解析目标sql并生成相应的Parent Cursor 和Child Cursor的过程。

Oracle硬解析和软件解析

硬解析:

Oracle在执行目标sql时,在库缓存中找不到可以重用的解析树和执行计划,而不得不从开始解析目标sql并生成相应的Parent Cursor 和Child Cursor的过程。

Oracle 在库缓存中找不到Parent Cursor和Child Cursor时都会执行硬解析过程。

硬解析的危害性有如下几个方面:

1、 硬解析可能会导致Shared Pool Latch的争用。在Shared Pool中分配内存需要持有Shared Pool Latch,如果并发的硬解析的数量很多的化,可能会导致Shared Pool Latch的争用,这会影响到系统的性能和可扩展性。

2、 硬解析可能会导致库缓存相关Latch 和Mutex的争用。

无论哪种类型的硬解析都会扫描相关Hash Bucket中的库缓存对象句柄链,而扫描库缓存对象句柄链表,需要持有Library Cache Latch,一旦发生大量的Library Cache Latch的争用,也会影响到系统和性能和可扩展性。

软解析:

软解析是指Oracle在执行目标sql时,在Library Cache中找到了匹配的Parent Cursor和child Cursor,并将存储在Child Cursor中的解析树和执行计划直接拿过来重用,而无需从头开始解析的过程。

软解析的优势:

1: 软解析不会导致Shared Pool Latch的争用,因为这个过程不会在Shared Pool 进行内存分配

2 软解析虽然也会导致库缓存相关的Latch的争用,但是软解析持有库缓存相关的Latch的次数较少,而且软解析对某些Latch(Library Cache Latch)的持有时间回比硬解析持有的时间短。硬解析会持有Library Cache Latch,并且在不释放Lihrary Cache Latch的情况下,持有shared Pool Latch,以从Shared Pool中分配内存,内存分配完成后,就会释放Shared Pool Latch,然后在释放 Library Cache Latch。 软解析不会持有Shared Pool Latch,因此持有Library Cache Latch的时间要短。

相关热词搜索: