oracle数据库的内存结构比较复杂,下面对pga/sga/uga做比较分析。
1. sga组成:
database buffer cache:包括 default pool,keep pool,recycle pool;
redo log buffershare pool:包括 library cache,dictionary cache
large pool
java pool
streams pool
fixed sga
2.pga组成:
1)sql工作区:sort area(排序区),hash area(构造hash表),bitmap merge area(索引区)
2)uga区3.pga和uga比较:
uga:user global area ,是会话含义的内存区
为了保证数据可以被会话访问到,所以 mts模式属于sga中的大池,专有模式属于pga,属于用户的内存区。
uga保存当前会话相关的信息,比如会话登录信息、pl/sql包的参数信息,绑定变量的值。
pga:program global area,是操作系统含义上的内存区,
可以理解为操作系统在一个进程启动时,为他分配的内存空间
查询使用 show pga;
4.sga和pga比较:
sga:共享数据块,所有进程可以访问,数据并发访问
涉及lock,latch,锁定和队列
是数据库最主要优化区域,一些重要的指标:data buffer hit,library hit(hard/soft parse),hot blocks
pga:为专有进程服务,进程间无法数据共享,数据独占
无需锁定机制
性能优化只需要考虑它的大小。