数据库学习笔记(8)-----关于Oracle的SGA和PGA的闲谈(2019/3/7)

数据库学习笔记(8)-----关于Oracle的SGA和PGA的闲谈(2019/3/7

自从Oracle 11g开始,就新引入了一个初始化参数'MEMORY_TARGET'。

这个参数是指整个Oracle实例能够使用的内存的大小,包括了SGA(System Globa Area)系统全局区和PGA(Program Globa Area)程序全局区的整体大小。

在’MEMORY_TARGET’的内存大小之内,PGA和SGA所用的内存大小可以根据当前负载情况自动相互转换。当初始设定的’MEMORY_TARGET’的内存不够当前数据库使用的时候,Oracle 11g还提供了另外一个初始化参数’MEMORY_MAX_TARGET’。当原始设定的内存不能使用的时候,可以手工动态调节它的大小,但是不允许超过’MEMORY_MAX_TARGET’的值。

SGA(系统全局区)

1、SGA是一组共享的内存结构,它里面存储了Oracle数据库实例的数据和控制文件信息。如果有多个用户同时连接到数据库,它们会共享这一区域,因此SGA也称为Shared Global Area。
2、SGA和Oracle的进程组成了Oracle的实例。在实例启动的时候,内存会自动分配SGA。当实例关闭的时候,操作系统会将内存回收的。每一个实例拥有自己的SGA。
3、SGA是可以读写的,每一个用户连到数据库实例时,都可以读实例的SGA的内容,Oracle通过服务器进程执行一个命令写SGA的数据。
4、SGA时占用内存最大的一个区域,同时也是影响数据库性能的重要因素
5、可以使用:
select * from v$sga 或 show parameter sga查询SGA各组件大小。

PGA(程序全局区)

1、PGA是一块包含一个服务器进程的数据和控制信息的内存区域。用于处理SQL语句和容纳会话信息。它是Oracle在一个服务进程启动时创建的,时非共享的。一个Oracle进程拥有一个PGA内存区。一个PGA也只能被拥有它的那个服务进程所访问,只有这个进程中的Oracle代码才能读写它
2、通常PGA由回话内存区和私有SQL区两部分组成。
3、程序全局区的大小由参数’PGA_AGGREGATE_TARGET’决定,可以通过SHOW PARAMETER语句查询该参数信息。

注:

PGA的大小有可能会影响SQL语句的执行过程,从而导致同样的SQL语句的执行效率完全不一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值