可以把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是一样的

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