http://www.2cto.com/database/201309/244325.html
Buffer Cache(缓冲区缓存)篇:keep pool(保留池)
默认缓冲区池
keep缓冲区池
recycle缓冲区池
--保留池和回收池可以独立于sga中的其他缓存分配内存。创建表的时候可以在storage子句中使用buffer_pool keep和buffer_pool recyle子句来指定表的数据块将要驻留的池。
keep缓冲区池
当数据读取到kepp缓冲区池后,会一直保留在内存中,不会被刷出内存,比如整天使用频繁的表,有利的做法是讲其放在keep缓冲池中,以减少IO数量。
keep池的大小由db_keep_cache_size决定,默认值为0
示例:
Setp1 设置db_keep_cache_size大小 SQL> alter system set db_keep_cache_size=32M scope=both; System altered. SQL> show parameter keep NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ buffer_pool_keep string control_file_record_keep_time integer 7 db_keep_cache_size big integer 32M /*--注buffer_pool_keep,8i参数,意义和db_keep_cache_size一样 增大db_keep_cache_size会相应减小db_cache_size,可以通过下面方式查看db_cache_size SQL> select * from v$sgainfo; Fixed SGA Size 2217992 No Redo Buffers 2396160 No Buffer Cache Size 255852544 Yes Shared Pool Size 230686720 Yes Large Pool Size 4194304 Yes Java Pool Size 4194304 Yes Streams Pool Size 0 Yes Shared IO Pool Size 0 Yes Granule Size 4194304 No Maximum SGA Size 839282688 No Startup overhead in Shared Pool 67108864 No Free SGA Memory Available 339738624 或 SELECT x.ksppinm NAME,y.ksppstvl VALUE, x.ksppdesc describ FROM SYS.x$ksppi x, SYS.x$ksppcv y WHERE x.indx = y.indx AND x.ksppinm LIKE '%__db_cache_size%'; SQL> SELECT x.ksppinm NAME,y.ksppstvl VALUE, x.ksppdesc describ 2 FROM SYS.x$ksppi x, SYS.x$ksppcv y 3 WHERE x.indx = y.indx AND x.ksppinm LIKE '%__db_cache_size%'; NAME VALUE DESCRIB ------------------------------ ------------------------------ -------------------------------------------------------------------------------- __db_cache_size 255852544 Actual size of DEFAULT buffer pool for standard block size buffers */ Setp2 将表keep到keep池中 方式1: SQL> create table test_keep1 (id int,name varchar2(32)); Table created. SQL> alter table test_keep1 storage(buffer_pool keep); Table altered. 方式2: SQL> create table test_keep2 (id int,name varchar2(32)) storage(buffer_pool keep); Table created. Step3 查看放入keep池中的对象 SQL> select segment_name from dba_segments where BUFFER_POOL = 'KEEP'; TEST_KEEP1 TEST_KEEP2 Setp4 将表加载到keep池中 SQL> select * from test_keep1; Setp5 检测IO情况 SET AUTOTRACE ON STATISTICS select * from test_keep1; Setp6 取消keep alter table test_keep1 storage(buffer_pool default);
相关推荐
在Oracle中,块缓冲区缓存是SGA(System Global Area)的重要组成部分,用于存储从磁盘加载的数据块。在早期版本中,所有数据块都统一存放在默认池(default pool)中。但从Oracle 8.0开始,引入了多个缓冲区池,包括...
SGA又细分为多个子区域,包括共享池(Shared Pool)、数据缓冲区(Database Buffer Cache)、重做日志缓冲区(Redo Log Buffer)等,各自承担不同的功能。 - **共享池**:存储了SQL语句、PL/SQL代码、数据字典缓存等,是...
* buffer_pool_keep:保留池大小(从 db_block_buffers 分配),目的是将对象保留在内存中,以减少 I/O。 * buffer_pool_recycle:循环池大小(从 db_block_buffers 分配),目的是使用对象后将其清除,以便重复使用...
- **Redo Log缓冲区**: 调整redo log缓冲区大小有助于提高事务处理速度。确保有足够的空间记录事务更改。 综上所述,Oracle性能调优涉及对SGA中多个组件的精细化管理,包括Shared Pool和Buffer Cache的大小调整、...
- **System Global Area (SGA)**: 分为共享池(Shared Pool)、数据缓冲区缓存(Database Buffer Cache)、重做日志缓冲区(Redolog Buffer)和其他几个组成部分。 - **Program Global Area (PGA)**: 每个会话(Session)...
这一节展示了数据库缓存的大小,包括数据库缓冲区缓存(DB_CACHE_SIZE)、保持缓存(DB_KEEP_CACHE_SIZE)、回收缓存(DB_RECYCLE_CACHE_SIZE)等,这些参数对数据库性能有直接影响。例如,增大DB_CACHE_SIZE可以...
2. 数据库缓冲区缓存(Database Buffer Cache):它负责从磁盘读入数据文件的数据到内存,以便所有用户共享。数据缓冲区中包含的数据块如果被修改,将由DBWR后台进程写回磁盘。数据缓冲区的大小直接影响数据库的读取...
4. **Buffer Cache种类**:利用Default、Keep和Recycle缓冲池来管理不同热度的数据块,提高缓存效率。 5. **内存碎片**:虽然Oracle的SGA中没有传统意义上的内存碎片,但可以通过合理设计应用和数据分布来避免数据块...
3. **DB_BLOCK_BUFFERS**:此参数设定数据库缓冲区缓存(Buffer Cache)的大小,直接影响数据读取速度。 4. **DB_BLOCK_SIZE**:定义数据库块的大小,影响数据存储和读取的效率,应根据应用需求进行合理设置。 5. ...
SGA主要包括共享池(Shared Pool)、数据缓冲区(Buffer Cache)以及其他几个部分。 ##### 1. 共享池调优 (Shared Pool Tuning) 共享池是SGA的一个关键组成部分,主要存储了数据字典缓存和库缓存等数据结构。对于性能...
1. 数据缓冲区缓存(Data Buffer Cache):这是存储表和索引块的地方,通过减少磁盘I/O来提高数据库性能。你可以通过调整数据缓冲区的大小来平衡内存与磁盘的交互,提高数据读取速度。 2. 重做日志缓冲区(Redo Log...
- SGA包括共享池(Share Pool)、数据缓冲区(DB Buffer Cache)、重做日志缓冲区(Redo Log Buffer)、大缓冲池(Large Pool)、Java池(Java Pool)和Stream Buffer(10g引入)等。 - 其中,数据缓冲区又细分为...
粒度大小的设置应根据实际工作负载进行调整,以确保数据缓冲区能有效地缓存数据块。 2. **DB_CACHE_SIZE**:这个参数定义了默认缓冲池的大小,应根据数据库的活动水平进行适当调整,以减少磁盘I/O并提高缓存效率。 ...
- **Redo Log Buffer**:用于存储重做日志条目的缓冲区。 - **Java Pool**:用于存储Java应用程序相关的数据。 - **Streams Pool**:为Oracle GoldenGate Streams功能预留的内存池。 ##### 2. PGA (Program Global ...
- **Keep Pool**:持久的缓冲池,大小由`DB_KEEP_CACHE_SIZE`决定。 - **Nonstandard Pool**:非标准块标准池,大小由`DB_nK_cache_size`决定。 - **Recycle Pool**:回收池,大小由`db_recycle_cache_size`决定。 -...
SGA的大小由多个初始化参数控制,例如DB_CACHE_SIZE定义了数据库高速缓冲区的大小,LOG_BUFFER设置了日志缓冲区的大小,SHARED_POOL_SIZE指定共享池的大小,LARGE_POOL_SIZE和JAVA_POOL_SIZE分别用于大池和JAVA池。...
- **缓冲区的类型**:缓冲区可以分为 Default Pool、Keep Pool 和 Recycle Pool。 - **缓冲区的配置**:缓冲区的大小通常通过参数 `DB_BLOCK_BUFFERS` 来控制。 - **缓冲区的限制**:在 32 位系统中,缓冲区的...
- **DB Keep Cache Size**:用于长期保留的数据块。 - **DB Recycle Cache Size**:回收不常用的数据块。 - **DB NK Cache Size**:非标准块大小的缓冲池。 - **DB Flash Cache Size**:用于闪回操作的缓冲池。 ...
Oracle数据库的体系结构由多个组件构成,如实例(Instance)、系统全局区(SGA)、重做日志缓冲区(Redo Log Buffer)、共享池(Shared Pool)、数据字典缓存(Data Dictionary Cache)、库缓存(Library Cache)、...
- `buffer_pool_keep`:保持缓冲池大小。 - `buffer_pool_recycle`:回收缓冲池大小。 - `db_block_lru_latches`:数据库块LRU闩锁数量。 - `shared_pool_size`:共享池大小。 - `log_buffer`:日志缓冲区大小。 - `...