buffer cache的大小设置以及依据

oracle018

buffer cache的大小设置以及依据


5. 注意几点:
1. (sql查询语句)从客户端传递到server process(前台进程),server process做一系列工作(语法校验、访问数据是否存在 、权限)在share pool查考是否有缓存该sql语句的记录,和执行计划
假如存在就直接从中执行执行计划,到了buffer cache中查考某条记录所存在的块对应的链中是否能存在索要访问的记录,假如有就直接取出,假如没有就从dbf文件中查出记录锁对应的块
存放到buffer中,再把数据返回。
2. (sql更新语句)前面都是一样的,当数据在buffer中被更新了就变成了脏数据,那么就从干净的LRU链中被挂在LRUW中了,通过后台进程DBRW写入数据到dbf文件中

DBWR这个进程可以通过ALTER SYSTEM SET DB_WRITER_PROCESSES=某个值 SCOPE=SPFILE;//不是设置的值越大越好。一般是cpu/8的比例
//下面的说明表示spfile是存放服务器初始化存放的配置文件,所以当存入其中需要进行服务器重启
The value of this parameter is the name of the current server parameter file (SPFILE) in use.
6. buffer cache 的重要参数的配置
SELECT component current_size,min_size FROM V$SGA_DYNAMIC_COMPONENTS//查询SGA中池子的大小
Buffer Cache的大小配置
alter system set db_cache_size=20 scope=memory/both/spfile;
SQL> show parameter SGA_;
NAME TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
sga_max_size big integer
400M
sga_target big integer
0
SQL>
修改max,然后修改target的最后才修改db_cache_size
在OLTP系统中,对于DB_CACHE_SIZE的设置,推荐配置是:
DB_CACHE_SIZE = SGA_MAX_SIZE/2~SGA_MAX_SIZE*2/3
使用advice来确认buffer cache的大小
//V$DB_CACHE_ADVICE contains rows that predict the number of physical reads for
//the cache size corresponding to each row. 这个试图存放着这个buffer cache与physic reads的变化关系

//V$PARAMETER displays information about the initialization
//parameters that are currently in effect for the session 表示该试图参数表示用来存放当前会话的一些参数信息

SELECT SIZE_FOR_ESTIMATE "Cache Size (MB)",SIZE_FACTOR,BUFFERS_FOR_ESTIMATE "Buffers",
ESTD_PHYSICAL_READ_FACTOR est_read_factor,
ESTD_PHYSICAL_READS estd_phy_red,ESTD_PHYSICAL_READ_TIME est_phy_red_t
FROM v$db_cache_advice
WHERE NAME='DEFAULT' AND BLOCK_SIZE=(SELECT VALUE FROM v$parameter WHERE NAME='db_block_size');










你可能感兴趣的:(buffer)