turning the buffer cache
一 buffer cache characteristics
Buffer cache 保存从数据文件拷贝的数据块。Buffer cache是SGA的一部分,所以所有的用户能共享这些块。Server processes 把数据文件读进buffer cache。为提高性能,一次读有时候读多个块。DBWn 进程写数据从buffer cache写进数据文件。为提高性能,DBWn一次写多个块。
某一时间,buffer cache可能容纳一个块的多个拷贝。一个已存在的块的拷贝,但是对于满足server process 可能需要构建读一致拷贝从以前的镜像信息。
Buffer cache 能有四种状态:pinned,clean,free,dirty
二buffer cache sizing parameters
(1)buffer cache能够组成独立的子cache为buffer pool和不同的块大小
(2)DB_BLOCK_SIZE参数确定主要块大小,这个块大小用于主块大小和系统表空间和主buffer cache(recycle,keep,default)
(3)确定buffer cache主要块大小:
DB_CACHE_SIZE
DB_KEEP_CACHE_SIZE
DB_RECYCLE_CACHE_SIZE
二 动态buffer cache 建议参数
buffer cache advisory 特性开启和关闭统计集合为预测不同缓存大小的性能。
Buffer cache advisory 被开启,初始化参数DB_CACHE_ADVICE三个值
off,on,ready
buffer cache advisory信息被v$db_cache_advice视图收集。这个视图不同的行估计
不同的cache的物理读的性能。
v$db_cache_advice 的行估计物理读,估计实际读的数量的命中率。
三使用v$db_cache_advice
select name,size_for_estimate,estd_physical_read_factor,estd_physical_reads from
v$db_cache_advice order by name,size_for_estimate;
|
SELECT size_for_estimate "Cache Size (MB)",
buffers_for_estimate "Buffers",
estd_physical_read_factor AS "Estd Phys Read Factor",
estd_physical_reads "Estd Phys Reads"
FROM v$db_cache_advice
WHERE name = 'DEFAULT'
AND block_size =
( SELECT value FROM v$parameter WHERE name = 'db_block_size'
)
AND advice_status = 'ON';
|
三 server process 和database buffer cache
(1)服务器进程检查需要的块是否是可用的在buffer cache用hash function
(2)如果在缓存里找到需要的块,移动这个块到LRU list的MRU(most recently used)
这是一个逻辑读,因为没有实际i/o发生。剩余的步骤不会执行因为server process已经找到所需要的块。如果在buffer cache没有找到缓存,server process从数据文件读取需要的块。
(1) 如果检查点队列超出队列大小,server process发信号给DBWn提交脏数据从database buffer cache.如果server process不能找到空间缓存,发信息给DBWn提交脏数据。
(2) 找到空间的缓存区后,server从数据文件读块进入database buffer cache空间缓冲区。如果块不能读一致,则server从undo空间建立一个读一致拷贝
DBWn Porcess和Database buffer cache
(1)checkpoint queue exceeds threshold
(2)search threshold exceeded
(3)alter tablespace offline or alter tablespace begin backup
(4)drop a segment
(5)clean shutdown
四调整目标和技巧
调整目标:
(1)服务器找到数据在内存中
(2)在buffer cache没有等待
调整措施:
(1)wait event
(2)cache hit ratio
(3)v$db_cache_advice
性能记录:
(1)buffer cache performance indicators
free buffer inspected
select name,value from v$sysstat where name = ‘free buffer inspected’;
|
free buffer waits buffer busy waits
select event,total_waits from v$system_event
where event in (‘free buffer waits’,’buffer busy waits’);
|
测量缓存命中率
SQL> SELECT 1 - (phy.value - lob.value - dir.value)
2 / ses.value "CACHE HIT RATIO"
3 FROM v$sysstat ses, v$sysstat lob,
4 v$sysstat dir, v$sysstat phy
5 WHERE ses.name = 'session logical reads'
6 AND dir.name = 'physical reads direct'
7 AND lob.name = 'physical reads direct (lob)'
8 AND phy.name = 'physical reads';
|
(2)缓存命中率不是所有
一个坏的数据库调整仍然能有一个99%或更好的命中率。
命中率仅仅是决定调整性能的一部分
命中率不能决定数据库是否被调整最佳性能
用oracle wait interface 审核引起性能瓶颈的原因
v$session_wait v$session_event v$system_event
(3)增加缓存大小指导方针
任何等待事件被调整
Sql被调整
没有不当的故障
以前增加buffer cache是有效的
低缓存命中率
(1) 计算多个缓冲池命中率
SELECT name,1 - (physical_reads / (db_block_gets + consistent_gets)) "HIT_RATIO"
FROM v$buffer_pool_statistics
WHERE db_block_gets + consistent_gets > 0
|
缓冲区高速缓存性能指示器
v$system_event
SELECT event, total_waits
FROM v$system_event
WHERE event in
('free buffer waits', 'buffer busy waits');
|
缓冲区忙等待(buffer busy waits)
数据块,如果争用表或索引(而非段头):
--使用无选择性索引检查sql语句。
--检查右侧的索引(即由多个进程在同一点插入的索引)
--考虑使用自动段空间管理或增加空闲列表,以避免多个进程试图插入同一个块。
--v$session_wait将给那些具有最频繁的块等待的块提供文件号和块号(在p*列中).然后这些被映射到各自所属的对象中。
还原头:
显示对回退段头的争用:如果没有使用自动还原管理,请添加更多的回退段。
还原块:
显示对回退段块的急用:如果没有使用自动还原管理,请考虑增加回退段大小。
空闲缓冲区等待(free buffer waits)
此事件表明服务器进程找不到空间缓冲区,并且通过写出灰数据缓冲区,来加速数据库写入器生成空闲缓冲区。灰数据缓冲区是指那些内容已被修改的缓冲区。当DBWn将块写入磁盘后,灰数据缓冲区将被释放,以便重新使用。
为了解决争用问题,DBWn必须使用缓冲区能够更快进行覆盖。要达到此目的,请检查加速写入进程的方法。本事件还指示出缓冲区调整缓存过小。检查缓冲区高速缓存命中率,以便确定高速缓存是否已经重新调整大小。
起因
在以下几种情况下,DBWn可能跟不上写入灰数据缓冲区:
I/O系统较慢。解决方法:检查文件是否均匀地分布于所有设备。如果没有效果,请使用高速磁盘,或者将那些与该问题相关的文件放入高速磁盘。
I/O系统等待资源:解决方法:检查文件是否均匀分布于所有设备。如果没有效果,请使用高速磁盘,或者将那些与该问题相关的文件放入高速磁盘。
缓冲区高速缓存太小,致使DBWn花费大量时间为服务器进程清空缓冲区。解决方法:增加缓冲区高速缓存的大小。
缓冲区高速缓存太大,致使DBWn进程不能释放足够的高速缓存缓冲区来满足需求。解决方法:减小缓冲区高速缓存大小,或者初始化更多的数据库写入器进程。
诊断空闲列表争用
v$waitstat和v$system_event动态性能视力用于诊断空闲列表争用问题。
select class,count,time from v$waitstat where class = ‘segment header’;
select event,total_waits from v$system_event where event = ‘buffer busy waits’;
标识对象:
v$session_wait包含引起“缓冲区忙等待”事件的段的文件ID和块ID。将这个视力与
dba_segments结合起来,可以标识段,并确定当前因该段而存在的空闲列表的数量。
SELECT s.segment_name,s.segment_type,s.freelists,
w.WAIT_TIME,w.SECONDS_IN_WAIT,w.STATE
FROM dba_segments s,v$session_wait w
WHERE w.EVENT = 'buffer busy waits'
AND w.P1 = s.header_file
AND w.P2 = s.header_block;
|
减少缓冲区忙等待(buffer busy waits)
数据块
--更改pctfree 和/或 pctused
--检查右侧的索引(即由多个进程在同一点插入的索引)
--增加initrans
--减少每个块的行数
段头
--使用空闲列表或增加空闲列表的数量
--使用空闲列表组
空闲列表块:
--增加更多的空闲列表
为了增加对象的可用空闲列表的数量,请执行以下操作:
--使用alter table 命令增加freelist数量
--将对象移动到使用自动段空间管理表空间。
自动管理空闲空间:
创建自动管理的表空间:
create tablespace bit_ykc
datafile ‘$HOME/oradata/u04/bit_seg01.dbf’
size 1m
extent management local
segment space management auto;
|
创建使用表空间自动管理的表:
create table bit_sp tablespace bit_ykc;
多个DBWn进程
--可以使用DB_WRITER_PROCESSES(DBW0到DBW9)部署多个数据库写入器进程
--这对那些使用大量cpu的smp系统十分有用
--多个进程不能与多个i/o从属同时使用
优化DBWn I/O
通过查看free buffer waits事件的值,来优化数据库写入进程
分享到:
相关推荐
《Turning Pro》是Steven Pressfield的经典之作,他也是《Do the work》和《The War of Art》的作者,这三部作品都是创业者和艺术创作者的必读书目。《The War of Art》首次将“抵抗”(Resistance)这个概念带入了...
mtk平台以及展讯平台 camera turning 学习资料 1.什么是 PDAF? 把一部分pixel左边遮住一半,右边遮住一半,模拟左右人眼差异找出相位差,计算对焦距离 2.平台如何做PDAF? 平台主要通过计算相位差,当相位差越远,...
ppt 模板 turningpoint
turning_point_2
这个单元的主题是“Would you mind turning down the music?”,主要涉及的是日常英语中的礼貌请求和建议。 在基础知识部分,题目主要测试学生对词汇和语法的理解。例如,第1题考察了动词短语“run out of”的过去...
这篇内容主要涉及的是英语教学中的测试题,主要针对的是八年级下册《Unit 7 Would you mind turning down the music》这一单元。这个单元的主题是关于礼貌请求和回应,尤其是涉及到“mind”这个词在英语中的用法。...
### SQL 性能调优工具概述 在数据库管理和优化领域,特别是针对 Oracle 数据库系统时,选择合适的工具至关重要。本文将详细介绍一系列用于提高 SQL 性能的工具和技术,包括 SQL*Plus、EXPLAIN PLAN、AUTOTRACE、...
The story begins with Leibniz in the 17th century and then focuses on Boole, Frege, Cantor, Hilbert, and Gödel, before turning to Turing. Turing's analysis of algorithmic processes led to a single, ...
They address the critical questions of formulating the right problem, collecting the right data, doing the right analyses, making the right decisions, and measuring the actual impact of the decisions...
Turning OBT On and Off 61 B.3. Function Keys 62 FKEYS Programming 62 Information Category 62 B.4. Tilt 62 TILT Programming 63 Information Category 63 B.5. Cursor Mask 63 CSRMASK Programming 64 ...
Practical Data Science A Guide to Building the Technology Stack for Turning Data Lakes into Business Assets 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国...
There’s something really satisfying about turning theory into practice, bringing with it a great feeling of accomplishment. Moreover it usually deepens and solidifies your understanding of the ...
Turning this around, if the probability that the random object has the property is greater than zero, then this proves the existence of at least one object in the collection that has the property....
Refactoring JavaScript: Turning Bad Code Into Good Code by Evan Burchard English | 13 Mar. 2017 | ASIN: B06XK1V629 | 442 Pages | AZW3 | 1.8 MB How often do you hear people say things like this? "Our ...
在本文中,作者介绍了三种基于转向函数(turning functions)的曲线匹配方法。转向函数是一种能够描述曲线局部方向变化的数学工具,它能够将曲线的形状特征转换为一个函数,以便于进行比较和分析。通过转向函数,...
本文所讨论的研究成果,即“Turning Mobile Phones into 3D Scanners”,便是在这一趋势下的具体体现。 该研究的背景和动机在于对简单可靠地生成现实世界物体和环境的3D模型的需求日益增长。传统的激光扫描技术虽然...