library cache oracle,sga之library cache 内部原理

一、概述

library cache(库缓存)是shared pool中的一块内存区域,它的主要作用是缓存刚刚执行过的sql语句和pl/sql(包括存储过程、包、函数、触发器)所对应的解析计划、解析树等对象,当同样的sql或pl/sql再次被执行时,就可以直接利用在library cache中的那些相关对象,而无需再次从头开始解析,这样提高了这些语句的执行效率。查看library cache在内存中的位置。

library cache oracle,sga之library cache 内部原理_第1张图片

缓存在library cache中的对象我们称之为库缓存对象(library cache object),所有的库缓存对象都是以库缓存对象句柄(library cache object handle)的结构存储在library

cache中,oracle通过访问库缓存对象句柄来访问库缓存对象。

库缓存对象句柄是oracle自定义的一种c语言复杂结构,它是以hash table的方式存储在library cache中的,这意味着oracle会通过hash运算来存储和访问对应的库缓存对象句柄。

下图为从hash角度分析库缓存的构成:

library cache oracle,sga之library cache 内部原理_第2张图片

由上图可看出,整个library cache可以看作是一组由hash bucket所组成,

你可能感兴趣的:(library,cache,oracle)