Library Cache Lookup

时间:2021-12-11 12:06:48

Library Cache Lookup

Libraey Cache Data Access

library cache是关于SQL语句的SGA中的一系列的链表,

library cache是通过访问一系列的hash buckets,实现使用hash table,

每个特定的hash值,链接到SQL语句

链接到SQL语句挂载hash buckets的列表,

每个语句在特定的列表上Hashes到一个hash值

链表是一系列的处理或引用,事实上,SQL语句本身组成了句柄,在每个句柄下,可能有多个相同SQL

语句的版本,同一条SQL语句多个版本发生在如下情况:

--指向不同的对象(不同的用户)

--绑定变量类型不同

--优化器模式不同或者NLS设置不同

多版本的信息存储在单独的子library cache cursors中,当一条新的SQL被解析时,

语句被Hash后,被放到一个链表于hash值关联。不同的SQL语句可能有相同的

HASH值.为了找到library cache中的sql语句,SQL语句被hash后,扫描列表来查找匹配的SQL语句,如果存在多个版本,逐个匹配。

匹配SQL语句时通过访问parent library cursor,余下的信息存在在子游标中,

如果多个版本存在,多个版本的子游标依次访问。