SGA系统全局区内存结构了解2008-04-14 16:31:04 来源:中国自学编程网 作者:佚名 点击:
System global area(SGA) 是一组共享的内存结构,它里面存储了oracle数据库实例(instance)的数据和控制文件信息。 ![]() Dictionary cache 数据字典是数据库的一组表和视图,它包含数据库的结构、用户等的各种信息。Oracle在解析sql语句的时候会频繁的去访问这些表,对于数据库的这些操作是必不可少的。因为这些数据非常经常的被访问,所以有两个地方存放这些数据在内存中。一个地方叫 data dictionary cache,也称之为 row cache,因为在在这块区域中存储的是以行的方式做的。另一个地方叫做library cache,所有的用户都是共享访问这两个地方的。 共享内存的分配和重用 一般来说,在内存中的一些条目一直会保留着的,除非需要按照LRU算法从内存中flush掉,如果有内存的需求,有些不用的就会被flush掉。 当一条sql提交到oracle进行执行的时候,oracle一般会执行分配的以下步骤: 1、 到共享池中去检查要执行的sql是否存在,如果存在就直接使用,如果不存在就需要在共享sql区中分配内存,存放新编译的sql。不论哪一种情况,都有私有sql区都会和用户的共享区的sql相关联。 2、 Oracle会分配一个私有的sql区和会话对应, Oracle在以下情况下会将共享sql区从共享池中flush掉: l 当使用analyze的时候,所有涉及的对象,都会被flush掉,下一次使用时会重新分配; l 当一个对象被修改了,其相应的sql也会被flush掉; l 改变数据库的全局名,所有的sql都会被flush掉; l ALTER SYSTEM FLUSH SHARED_POOL时,所有的sql也会被flush掉 相关文章:
|