缓冲区缓存在oracle数据库中的工作原理



我的问题是,在Oracle数据库中,如果有一个5Gb表,并且SGA大小为10GB,如果我选择5Gb表格,它将适合10GB的SGA大小。

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

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

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

缓冲缓存工作:

当我们从磁盘请求数据时,oracle至少读取一个块。即使我们只请求一行,也可能检索到同一表中的多行,这些行位于同一块中。专栏也是如此。

缓冲缓存中的块可以处于以下三种状态之一:

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

发生以下情况之一时,会触发块写入:

  1. 向数据库发出关闭命令
  2. 出现完整或部分检查点
  3. 出现恢复时间阈值,该阈值由我们再次设置
  4. 需要一个空闲块,在给定的时间后找不到任何空闲块(我们在这里使用LRU算法)
  5. 某些数据定义语言命令(DDL)
  6. 每三秒。还有许多其他原因,算法很复杂,每次发布oracle都会发生变化

最新更新