2015-04-12 123 views
0

我的问题是,在Oracle数据库中如果有5Gb表和SGA大小为10GB,如果我选择5Gb表,它将适合10GB SGA大小。缓冲区缓存如何在oracle数据库中工作

但是,如果我的表超过10GB,并且我的SGA大小是5Gb,那么select查询如何工作,它是否显示10GB表的所有行,以及缓冲区CACHE如何工作?

+0

在现实生活中,您不会选择10GB表中所有行的所有列。或者如果你做了,你不会再做一次。 – APC

+1

您应阅读“数据库概念”手册中的SGA部分。 [了解更多信息](http://docs.oracle.com/database/121/CNCPT/memory.htm#CNCPT802)。您应该阅读所有内容,以了解*缓冲区和全表扫描*部分。 – APC

回答

0

如果我们有一个比SGA更大的表格,那么我们必须将SGA的大小再次定义为所需的大小,然后问题就解决了。

我们可以在创建数据库时定义SGA和PGA的大小。

缓冲缓存工作:

当我们从磁盘请求数据时,以最小的Oracle读取一个block.Even如果我们要求仅一排,在同一表中许多行都有可能被检索,其位于在同一个块中。列也是如此。

在缓冲区高速缓存块可以在三种状态之一:

  • 免费:当前未使用
  • 固定:当前正在访问。
  • 脏:块已被修改,但目前尚未写入磁盘。

    1. 数据库发出关机指令:

当出现以下情况之一的块写入了被触发。

  • 发生完整或部分检查点。
  • 恢复时间阈值出现,我们再次设置。
  • 需要一个空闲块并且在给定的时间量之后没有找到(我们在这里使用LRU算法)。
  • 某些数据定义语言命令(DDL)。
  • 每隔三秒钟。还有很多其他的原因,算法很复杂,可以随每次发布oracle而改变。