oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情

可以把oracle数据库想象成一个抽水泵

oracle的存储就是水存放的位置,这涉及到的是oracle的逻辑存储:

data_block-extent-segment-tablespace

oracle实际数据对应的表空间,表空间又对应的是-datafile,在操作系统上的物理文件

使用full table scan的话,是寻找一张表的所有的row,从row中找到对应的数据

找到对应的data block,把datablock复制到oracle内存中的SGA里面的buffer cache,

存放到SGA中的buffer cache以后,

SGA的结构:我看过oracle官方文档中的部分:

system global area里面有的东西:SGA中的buffer cache区域

存储的是,你把data block中的东西复制到buffer cache中


问题:buffer cache中有几种状态:

dirty,free clean

dirty:buffer cache里面的data block已经被修改过,和磁盘中的data block不同步,所以我们称之为dirty,需要sync 同步到硬盘里。

unused :没有使用过

clean:和硬盘中的data block是一样的wKioL1LWPu6ALU9CAAG2C8jq0kw097.jpg


this is fucking brilliant

data block和硬盘上的data block是一样的,unbelievable,which means lots of things

you know ,actually ,the row in a datablock ,now it's in database buffer cache



oracle PGA和oracle SGA的关系:

我认为的,既然是内存,PGA就会存储oracle的,program的代码,但是SGA才是真正解析之后的东西的存放的位置,PGA和SGA会有交互

sql都会放到shared pool里面去生成一个特定的hash value


this is my thought


oracle 的library cache里面包括shared sql area和private sql area

wKiom1LWQWWy0DpVAAIs-0A_nxo481.jpg

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