Oracle Database_buffer_cache大小的设置及依据
http://v.youku.com/v_show/id_XMzkyMjA5NTEy.html
所做的学习笔记
1.介绍DBWR写进程.
之前介绍过Database buffer cache的作用流程了,参考下图:
具体可以参考我之前的学习笔记:
http://nvd11.blog.163.com/blog/static/200018312201302695451760/
但上面这个流程只提到了用户客户端读取数据的流程, 并没有提到修改数据..
1.1 用户修改数据后, 对应buffer会变成1个脏buffer
当用户修改数据,并且提交后, 数据就会写入对应buffer, 该buffer的数据就跟dbf文件中的block不一致了, 所以就成了1个脏buffer.
并且这个脏buffer会被加入到database buffer cache中的 LRUW链 和 checkpoint queue链中.(参考http://nvd11.blog.163.com/blog/static/200018312201301875752730/)
1.2 这时server process就直接提示用户修改完成,可以进行下1个动作了.
Server Process就会进行1个动作, 并不负责将这个脏buffer写入dbf文件.
1.3 负责将脏buffer写入dbf文件的是后台的DBWR进程
而DBWR进程就会隔一段时间触发一次(例如3秒1次), 将LRUW的冷端若干个脏buffer写入dbf文件, 当然也会有其他原因会额外触发DBWR进程, 例如数据库十分繁忙, database buffer cache里脏buffer太多, 要清理一部分脏buffer才能将新的block写入database buffer cache.
1.4 将脏buffer写入dbf文件动作交由后台进程的原因.
原因都很简单了, 因为Server process的快慢直接影响用户的使用感受, 而将脏buffer写入dbf文件的动作是1个很耗时间的物理写动作, 所以会延时分批地交由后台进程DBWR处理. 而通常物理读无法避免, 很多时候用户必须等待物理读才能得到数据,所以物理读是Server process负责的.
大概流程如下图啦:
所以DBWR是Oracle保证database buffer cache中的脏块能及时 合理地写入数据文件的一个后台进程.
1.5 查看服务器的DBWR进程:
如上图那个就是dbwr进程了, 不过既然他的名字是dbw0, 也就是它可以是dbw1.. dbw2, 也就是可以存在多个dbwr进程了.
查看数据库dbwr进程个数:
可以用下面命令来设置dbwr的个数:
alter system set db_writer_processes = 2 scope=spfile;
然后重启啦
不过, dbwr个数绝不是越多越好, 一般是cpu的核心个数除以8. 也就是服务器如果有2个8核cpu的话可以考虑将dbwr个数设置为2,因为dbwr是1个十分耗cpu资源的进程啦.
2. 设置database buffer cache大小
这个, 跟shared pool的设置很类似, 也就是有两种设置方法
1. 设置sga_taget, Oracle会自动分配database buffer cache的大小
2. 手动设置database buffer cache大小
通常生产中我们会执行第2中,也就是手动的设置
2.1 查看当前buffer cache大小
可以用下面语句来查看当前database buffer cache的当前实际大小:
select component,current_size,min_size from v$sga_dynamic_components;
如图:
可以见到
Default buffer cache就是当前的database buffer cache的大小啦
当然我这个测试数据库不正常啦, 才70m多 而我的sga_target 是628m的.
正常来讲, buffer cache的大小一般占 sga大小的1/2 到2/3
老相老师说一般直接设置在sga 2/3就ok了
2.2 设置当前buffer cache大小
一般来讲先设置sga_max_size大小. 然后设置sga_target 大小,
alter system set sga_max_size = 2G scope = both;
重启数据库
alter system set sga_target = 2G;
alter system set db_buffer_cache = 1.3G scope =both;
也可以参考Oracle db_advice来设置database buffer cache的大小:
执行如下语句:
select size_for_estimate as "Cache Size MB",
size_factor,
buffers_for_estimate as Buffers,
estd_physical_read_factor est_read_fator,
estd_physical_reads estd_phy_read,
estd_physical_read_time est_phy_read_t
from v$db_cache_advice
where name='DEFAULT'
and block_size = (select value from v$parameter
where name='db_block_size');
如下图:
其中buffers列是buffer的个数啦, 倒数最后两列分别是物理读次数和物理读时间
可以看到随着buffer cache大小变大, 物理读时间不断减少,
生产中选物理读时间最小那个临界值对应的buffer cache一般就ok了.
我这个渣测试数据库没什么参考意义啦~
Oracle Database_buffer_cache大小的设置及依据相关推荐
- oracle sga设置 256G,Oracle SGA大小的解决方法的调整
以下的文章主要介绍的是调整Oracle SGA大小的解决方法,如果你是调整Oracle SGA大小的解决方法方面的新手,你就可以通过以下的文章对调整Oracle SGA大小的解决方法如何正确使用的详细 ...
- Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条
Seaborn使用set_context函数调整绘图标签和线条的大小.设置不同的模式.例如notebook模式.PPT模式.海报模式等.set_context函数可以指定绘图上下文并自动调整标签和线条 ...
- R语言ggplot2可视化设置数据点的大小、设置数据点的颜色、设置数据点边缘线条的厚度(point border thickness)实战
R语言ggplot2可视化设置数据点的大小.设置数据点的颜色.设置数据点边缘线条的厚度(point border thickness)实战 目录
- 字体大小的设置_老年人用智能手机,怎样更改字体大小?3种方法,手把手教您学会...
分享生活小妙招,共享科技新生活!大家好,欢迎来到今天的知识分享!我是你们的好朋友小俊! 我们的老年朋友在使用手机时候都会觉得字体太小,导致使用起来非常不方便,那么今天我就教大家三种方法来设置字体大小, ...
- 字体大小的设置_ios 设置的字体大小与实际的字体大小不一致
问题缘由:做文章详情页的时候,文字多了一点字体就放大了,真的是奇了怪了. 如果你觉得本文对您有用,可以关注我的个人微信公众号 @前端爱好者社区 会为你带来更多的内容. 问题重现 一段文字的时候 两段文 ...
- python配置核_浅谈pytorch卷积核大小的设置对全连接神经元的影响
3*3卷积核与2*5卷积核对神经元大小的设置 #这里kerner_size = 2*5 class CONV_NET(torch.nn.Module): #CONV_NET类继承nn.Module类 ...
- 【问题】HDFS中块(block)的大小为什么设置为128M?
一.为什么HDFS中块(block)不能设置太大,也不能设置太小? 如果块设置过大, 一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢: 另一方面,mapreduc ...
- Foxmail邮件字体大小怎么设置 Foxmail字体的设置方法
Foxmail写邮件的时候,想要设置邮件的字体,和字体大小,该怎么设置呢?下面我们就来看看详细的教程. Foxmail邮件字体大小怎么设置? Foxmail字体的设置方法 1.下载并安装Foxmail ...
- Eclipse编辑器字体大小的设置
我们在第一次使用 Eclipse 编写程序时,由于 Eclipse 默认使用的是 Cosnolas 字体,字号为 10,所以编辑器中的字体非常小,不方便查看. 我们可以通过下面所示的方法来修改编辑器的 ...
最新文章
- Gut: 妊娠期糖尿病与孕妇及其新生儿微生物菌群失调有关(赵方庆作品)
- 基于深度学习的目标检测的研究进展2
- 第四周项目二-太乐了
- 掩码计算工具netmask
- org.springframework.beans包
- 软件工程师怎样减轻工作过程中遇到的压力
- 图像的灰度级数越多越好_MATLAB-数字图像处理 图像直方图归一化
- 工作194:vue.runtime.esm.js?2b0e:619 [Vue warn]: Duplicate keys detected: ‘/system‘. This may cause an
- python中的pip是什么_python中的pip
- Activity之间传递参数
- 异常检测: 多元高斯分布
- iRecognizer号码扫描开发实录
- Android 使用POI导出Excel表格
- stm32电容触摸按键实验
- vue admin html,vue-admin-template笔记(六)
- linux quota原理,[转载]linux下quota实现
- 计算机操作系统存在的意义,电脑操作系统的作用
- 4.8 期货每日早盘操作建议
- 使用Python编程出高级计算器,支持加减乘除、复合运算、三角函数、平方根、二进制转换、幂运算等高阶运算
- 使用高德地图 地址一经纬度 之间相互转化的实例代码 python
热门文章
- 自动化测试之鼠标悬浮操作、双击、鼠标拖拽
- mk_trustonic.mk编译脚本
- 密码学-hash加密
- 在屏幕上输出你好的python语句是_编程实现:在屏幕上输出中文字符“你好,世界”。(输出结果中不带双引号)_学小易找答案...
- androidstuido_schooltest_1
- 【逆向分析】快速查找指定代码的几种方法
- 攻击者怎样使用HTML和CSS隐藏“外部发件人”电子邮件警告
- 无线网络渗透测试-使用Aircrack-ng工具破解无线网络
- kali下fcrackzip使用
- 【Cockpit】 如何组织管理多台服务器?