WEB开发网
开发学院数据库Oracle Oracle Freelist和HWM原理及性能优化 阅读

Oracle Freelist和HWM原理及性能优化

 2007-05-10 12:19:16 来源:WEB开发网   
核心提示: 举例来说如果有五个块在free list中,分别为A,B,C,D,E就会形成segment header->A->B->C->D->E--|同时segment header->E2.3 free list类别在段中存在3类free list, 即Mast

举例来说如果有五个块在free list中,分别为A,B,C,D,E

就会形成segment header->A->B->C->D->E--|

同时segment header->E

2.3 free list类别

在段中存在3类free list, 即Master Freelists (MFL), Process Freelists (PrFL), 和 Transaction Freelists.

2.3.1 Master Free List(公用空闲空间池):

每一个段中有一个Master free list,在段创建的时候自动生成。对于每一个段来说都有这样一个空闲空间池,对每个进程都是公用的,空闲空间就是位于master free list 的块上。由于Master free list是公用的,因此当多个进程同时插入行到同一个段上,master free list竞争使用程度就会增加。

2.3.2 Process Free Lists

为了减少Master Free list的竞争问题, 引入了另一种free list叫做Process free lists, 根据sql命令 CREATE/ALTER 中的参数FREELISTS 创建. 这样多个free list 就可以分摊空闲空间的管理,以提高OLTP应用作高度并发插入和更新事务时空间分配管理的性能。通过指定CREATE TABLE / CLUSTER or INDEX的子句STORAGE的参数FREELISTS 来创建,例如: CREATE TABLE flg ( . . . .) . . . STORAGE ( ... FREELISTS 10 ...)。缺省的FREELISTS为1,此时不会创建Process free lists。当FREELISTS>=2时,创建Process free lists。

进程在使用process free list是根据进程的Oracle PID (Process ID)来选择的,公式如下:

  select list entry = (PID % NFL) + 1

NFL : FREELISTS定义的Process free list个数

2.3.3 Transaction Free Lists

当Oracle需要时动态创建。一个Transaction Free List 是一种专门给某一个事务使用的free list. 每个段至少有16个transactions free lists, 并且这个值在需要时会增长,直到达到Segment Header块的大小限制。一个事务只有下面情况下会需要分配一个Tx Free Lists entry: 块中释放空间时(DELETE or UPDATE) 并且还不存在Tx Free Lists entry时。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Oracle Freelist HWM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接