您的位置:首页 > 数据库 > Oracle

Oracle PGA和SGA区别以及latch和lock的使用场合

2014-02-10 14:08 344 查看
1.PGA和SGA区别是什么?

SGA是系统全局区,PGA是进程全局区,也有叫用户全局区。

oracle在跑,SGA就是oracle的内存结构,主要存放:

a) 共享池(shared pool) :用来存储最近执行的SQL 语句和最近使用的数据字典的数据。

b) 数据缓冲区 (database buffer cache) :用来存储最近从数据文件中读写过的数据。

c) 重作日志缓冲区(redo log buffer ):用来记录服务或后台进程对数据库的操作。

另外在SGA 中还有两个可选的内存结构:

d)Java pool: 用来存储Java 代码。

e)Large pool: 用来存储不与SQL 直接相关的大型内存结构。备份、恢复使用。

oracle启动时分配,oracle关闭时回收。

PGA是有用户连oracle时,oracle给开辟的一个内存区, 只供该用户使用,该用户断开后,oracle就会将这块内存回收。

2.latch和lock分别适用于什么场合?

lock分表级锁,行级锁,也可以分共享锁、独占锁,就是对比进行操作时进行锁定。

latch是内存锁。比如,一个数据块,被加载到内存中,当多个会话对该内存中的块进行争用时,使用的锁。

3.char、varchar和varchar2的区别是什么?

char的存储为定长的。

varchar和varchar2的存储都为不定长的,字符要用几个字节存储要看数据库的字符集。

varchar2是oracle提供的独特的数据类型,oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,这是因为varchar是标准sql提供的数据类型,有可能随着sql标准的变化而改变 。

oracle中会将空字符串当做null来处理,而sql标准的varchar则会存在空字符串。

新版本中varchar就是varchar2的别名,没有什么区别,但是由于上述原因,推荐使用varchar2。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: