buffer cache oracle

2023年 8月 3日 55.7k 0

Oracle的Buffer Cache是用于缓存数据库块的空间,缓存的是读取原始磁盘数据的数据块。尽管Oracle采用了许多优化技术来最小化磁盘I/O,但是仍然需要载入磁盘数据块。Buffer Cache的目的是尽可能减少读取原始磁盘数据的操作,并将这些块保留在内存中用于以后的访问。

缓存是通过物理内存的分别来处理的,但实际上是通过Oracle进程处理的。有些进程被称为DBWR(数据库写进程),它们负责将修改后的块都写回到硬盘,有些被称为DBW0,它是将缓存中最旧的块刷回磁盘的化身。缓存是实现缓解磁盘I/O的一个重要手段。

不同的Oracle版本使用不同的块大小。在Oracle8中,块的大小通常是2Kb到16Kb。在Oracle9i中,默认块大小增加到8Kb到32Kb。在新版本中使用的块大小更大。从Oracle10gR1开始,默认块大小增加到是4K到32K。从版本11gR2开始,可以使用大块(大于8K)高效地存储大型数据。

SELECT
NAME, CHILD_NUMBER, BYTES/1024/1024 "SIZE (MB)", BLOCK_SIZE
FROM V$SQL_SHARED_CURSOR
WHERE LOADED_VERSIONS >1
ORDER BY NAME, CHILD_NUMBER;

但一般来说,块越大而相对于查询数据给出的块位置大小更近,缓存就更有效,访问所需的​​硬盘I/O就越少。此外,以较大的块大小缓冲大型表时,Buffer Cache的效果也更明显;另外还可以增加SGA(内存)的大小。

缓存中的块可能与存储在其他块(委托缓存和固定缓存等)中的数据冲突。委托缓存可以分配大量内存来缓存大量数据。与此相反,固定缓存是为应用程序缓存数据而使用的。缓冲池大小也可能存在缺陷,如果过大,大块可能会被缓存而不使用,而如果过小,则可能会丢失大部分缓存,以致于缓存中的数据只是临时存储。

在处理数据库数据块时,Buffer Cache的角色是非常关键的。Oracle数据库中的每个单独块的大小不能超过DB_BLOCK_SIZE。缓冲池大小通常是主机内存的一小部分。缓存池的大小应该足够覆盖数据库中最近使用的全体书目的块大小。否则,在查询过程中,使用不常使用的块时就会写入硬盘。

SHOW PARAMETER SGA_MAX_SIZE;

现在许多应用程序都使用Oracle数据库,如银行系统,医院管理,诊断设备监控,能源管理等等。对于数据库,我们可以通过它来帮助管理应用程序,缓解磁盘 I/O ,以及增加性能,而在Oracle中,缓冲池就是其中的一个重要元素。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论