可以把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