BUFFER CACHE作为数据块缓冲区,不是一块简单的内存区域。在这一块内存区域上,Oracle设计了很多LATCH来保护BUFFER CACHE的结构不受并发性访问的破坏,当LATCH数量不够用或并发访问模式不兼容时,将会引起LATCH的争用,这就是我们经常看到的LATCH FREE等待事件。
从BUFFER CACHE中读取数据块一般需要花费100ns左右,假设每次只读取一个数据块,也就是每秒可以读取10 000 000个数据块。而从磁盘读取数据块一般需要花费10ms左右(包括寻址定位时间和传输时间),也就是说每秒只能读取100个数据块。从这个角度来讲,数据块从内存中读取的效率要比从磁盘中读取高100 000倍,但并不是说数据块从BUFFER CACHE中读取一定比从磁盘中读取好,即BUFFER CACHE的命中率并不是越高越好。BUFFER CACHE作为Oracle 数据块的缓冲区,不同的系统类型和业务模块对其命中率的敏感程度会有所不同。比如OLTP系统并发高、事务小、响应快、SQL执行时读取的数据块数量较少,因此,在此系统上比较高的BUFFER CACHE命中率不仅能加快数据块的读取时间,而且能有效缓解存储的I/O压力。而OLAP系统并发低,事务大,SQL执行时读取的数据块数量较多, 所以在这类系统中,BUFFER CACHE命中率的高低却不是特别重要,而且在此类系统中,将所有的数据块都存储在BUFFER CACHE中也不太现实。
客户端发起读取业务数据的需求,数据库在接受到这个请求之后,首先会在BUFFER CACHE中查看所需的数据块是否存在,如果存在,则从BUFFER CACHE中读取数据块内容返回给业务程序。如果不存在,则由服务器进程从数据文件中将数据块读至BUFFER CACHE中,然后再返回给业务程序。从以上简单的流程中可以引申出以下几个优化点:
1、当数据块在BUFFER CACHE中不存在时,业务程序只能从数据文件中物理地读取数据块(PHYSICAL READS),因此会消耗比较多的I/O资源。当存储I/O压力比较大时,可以增加BUFFER CACHE,加大数据块驻留在BUFFER CACHE中的概率,从而缓减系统I/O压力。
2、业务程序读取BUFFER CACHE中的数据块之前需要获得一系列LATCH,所以在某些场景下,数据块不经过BUFFER CACHE直接返回给应用程序效率可能更高一些。
3、同一时刻,Oracle只允许一个进程修改数据块。如果大量的进程并发读取或修改BUFFER CACHE中相同的数据块,那么势必会引起争用。
分享到:
相关推荐
在本文中,我们将详细介绍 Buffer Cache 的工作原理、状态、管理和优化方法。 Buffer Cache 的工作原理 Buffer Cache 由多个相互独立的 Buffer Pool 组成,每个 Buffer 对应一个 block,不同的 block size 对应...
Buffer Cache深度分析涉及到内存管理、缓存命中率优化、并发控制等多个方面,是理解Java数据库连接(JDBC)和数据库性能优化的关键。 Buffer Cache的主要功能是将频繁访问的数据页存储在内存中,减少对硬盘I/O操作...
通过优化Buffer Cache的管理机制,可以显著提升数据库性能。 #### Buffer Cache的关键组件 为了实现高效的缓冲区管理,Buffer Cache主要包括三个关键的数据结构: 1. **HashBucket & HashChain List** - **作用*...
Buffer Cache与Cache的区别在于,Buffer Cache特指Oracle数据库中的数据缓冲区,主要优化的是磁盘I/O,而Cache则涵盖了从硬件层面到操作系统层面的各种缓存机制,包括CPU缓存、文件系统的Page Cache等,其目标是提升...
### Oracle Buffer Cache 深入分析 #### 一、Buffer Cache 概念及重要性 Oracle 数据库的核心功能之一就是高效地管理和访问数据。而为了提高数据访问速度,Oracle 引入了一个重要的内存组件——Buffer Cache(数据...
Oracle数据库中的Buffer Cache是数据库性能优化的关键组件,主要用于缓存数据块,以提高用户访问数据文件数据的效率。Buffer Cache的工作原理和参数设置对于数据库性能有着显著的影响。本文将深入探讨Buffer Cache的...
Buffer Cache则是Linux用来优化磁盘I/O性能的机制。它将经常访问的数据存储在内存中,减少对磁盘的直接访问,从而提升读取速度。例如,打开一封邮件后,邮件内容会被缓存,后续的编辑、复制或移动操作都会更快。...
Oracle Buffer Cache 深度解析 Oracle Buffer Cache 是 Oracle 数据库中的一种内存缓存机制,用于提高数据库的性能。Buffer Cache 通过将...通过理解 Buffer Cache 的原理和管理机制,可以更好地优化数据库的性能。
Linux 操作系统中内存 buffer 和 cache 的区别 在 Linux 操作系统中,内存 buffer 和 cache 是两个重要的概念,它们都是占用内存的,但是它们的...理解 Buffer 和 Cache 的概念和区别对于系统的优化和管理非常重要。
### Linux内存中Buffer与Cache的区别 #### 概述 Linux操作系统在管理内存资源时采用了高效且灵活的方法。当我们使用`free`命令查看系统的内存使用情况时,可能会注意到一个现象:即使系统似乎没有运行太多的应用...
buffer cache深度分析
- Cache:更接近于内存,可以理解为内存的一个优化层。 综上所述,Buffer与Cache虽然都属于Linux内存管理的重要组成部分,但它们各自扮演的角色和发挥的作用是不同的。正确理解和区分这两者有助于更好地管理Linux...
### Linux操作系统中内存buffer和cache的区别 #### 一、引言 在Linux操作系统中,内存管理是一项关键的技术,它直接影响到系统的性能和稳定性。本文将详细介绍Linux系统中内存buffer和cache的区别及其工作原理,...
1. **增大Buffer Cache**:当Buffer Cache内存不足时,可以考虑增加其大小,以减少磁盘I/O。 2. **优化SQL**:不良的SQL执行计划会导致高逻辑读和低效率,需要调整SQL语句或执行计划。 3. **DBWR进程**:确保有足够...
操作系统课程作业-队列管理、进程管理、内存管理、bufferCache、系统文件、内存管理.zip
本文档提供了一项针对 Linux 缓冲区缓存(Buffer Cache)在运行 Oracle OLTP(在线事务处理)工作负载时的性能分析研究。通过一系列测试收集了缓冲区缓存命中率及测试运行时间数据,为理解该系统复杂操作提供了宝贵...
Linux系统内核的文件Cache管理机制是其高效运行的关键组件之一,尤其是在高性能计算场景中,Linux的主导地位离不开对文件I/O的优化。文件Cache管理的主要目标是提高数据访问速度和减少磁盘I/O,从而提升整体系统性能...