oracle缓存的数据在哪,oracle优化 缓存对象与数据

本文介绍Oracle数据库性能优化的方法,重点讲解通过调整缓存策略来提高IO速度,包括缓存数据和数据对象定义的方式,以及如何利用不同的缓存池提高整体性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

author:skate

time:2010/03/16

当系统出现性能瓶颈时,尽量较少不必要的资源消耗,最后就是平衡cpu,内存,io,network等资源,使数据库

可以稳定的运行。

oracle数据库优化的根本是

1.尽量减少资源消耗,例如优化sql,减少sql本身的资源消耗

2.如果无法进一步减少资源的消耗,那就让数据尽量靠近cpu,也就是把数据从硬盘转移到内存(内存的读写速度快)

或者换更快的磁盘

本文就简单总结下如何缓存数据和数据库对象(也就是把数据移向内存,提高内存的命中率,以提高整体io速度)

1.缓存数据

2.缓存数据对象的定义,例如package,procedure,pl/sql和sql(也就是cursor)等

上面说的这两种数据就存在oracle最重要的两个部件中share pool和buffer pool中,提高这两个pool的命中率也提高了

io速度,而io又是当今技术发展最慢,系统的最大的瓶颈。

1. 缓存数据

这里说的oracle数据是占大量存储空间的,不是存在数据库字典里的数据;oracle的数据的类型一般为:

SQL> select se.segment_type from dba_segments se group by se.segment_type;

SEGMENT_TYPE

------------------

LOBINDEX

INDEX PARTITION

TABLE PARTITION

NESTED TABLE

ROLLBACK

LOB PARTITION

LOBSEGMENT

INDEX

TABLE

CLUSTER

TYPE2 UNDO

11 rows selected

SQL>

在大部分时候,把这些数据放到内存里,会很大的提升系统的性能

buffer pool分为三个子pool,这三个pool都主要使用LRU算法管理的

default buffer pool:默认所有的数据块都存在这,并遵循本pool的LRU算法

keep buffer pool:如果指定数据块缓存到keep区的,数据块就不太可能因为执行其他一些操作被其他数据块交换出,即使较长时间没使用了,只遵循本pool的LRU

recycle buffer pool:设置recycle是因为有时会有一些大的又教少使用的表的操作,如果不设置单独的缓存区,那么缺省的缓存区中的数据块就被这些偶尔使用的数据换出,它的空间比较小,所以说一般使用完就释放掉了,它也只遵守本pool的LRU算法

以table为例:

修改table的缓存空间

alter table a_user storage(buffer_pool keep) cache/nocache;  ---把表a_user缓存到keep buffer pool中最热端/把表a_user从keep buffer pool立刻释放出去

alter table a_user cache/nocache  ---把表a_user缓存到default buffer pool中最热端/把表a_user从default buffer pool立刻释放出去

eg:

1)

SQL> alter t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值