freelists and freelist groups
2008-07-09 22:17
197 查看
MFL, PFL ,TFL
master free list或者segment free list简称为MFL,在segment被创建的时候自动生成的,如果我们在创建segment时没有指定freelists参数,或者指定freelists=1,都是生成这个MFL。MFL对于每个segment来说有且只有一个。如果指定freelists>1,产生的就不是MFL,而是PFL (process free list)。无论是不是有PFL,对于每个segment来说都仍然存在1个MFL。也就是如果我们定义freelists等于2的话,那么在segment header block中将总共存在3个freelist,其中1个是MFL,另外2个是PFL。这个级别的free list中的空闲块只能被一个进程读取。想象一下,如果当前系统对于某张表最多同时会有10个进程同时作insert操作,那么我们设置freelists=10,将能尽量满足每个进程都能够使用专属于自己的free list,无疑通过这样的手段我们缓解了free list的争用。一个进程到底会使用哪个PFL,oracle内部的算法是:(P % NFL) + 1其中P表示DML操作进程的Process ID,可以从v$process.pid字段中取得。NFL表示freelists存储参数定义的PFL数量。
transaction free list在Oracle中事务(transaction)是一个重要的概念,每次DML操作,事务的开始都是自动的,而我们可以通过commit或者rollback来标志一个事务的结束。一个进程(或者说一个用户会话)有自己的PFL,然后一个进程可能会执行很多的事务,于是又出现了这个级别的free list,这就是transaction free list,简称为TFL。TFL是动态产生的,只有当DML语句(比如delete或者update)使block占用量降到pctused参数指定值之下时才会生成TFL,一个TFL只属于一个事务,而一个事务也只会有一个TFL,一个事务没有提交之前,此事务的TFL上的空闲块不会被其它事务使用。但是可以立刻被本事务使用(此时这些空闲块被称为previously freed blocks)。每个segment最少可以有16个TFL,同时只要有需求就会动态增加TFL数量,除非达到了segment header block size的限制。当没有空间允许新的事务得到自己的TFL时,这个事务就必须等待其它的事务提交并释放TFL。等待哪个事务的算法是:(P % NFL)其中P表示DML操作进程的Process ID,可以从v$process.pid字段中取得。NFL表示当前的TFL总数量。
Super Master Free list或者Segment Master Free list这个级别的free list只有在设置了多个freelist groups时才会出现。当我们设置freelist group>1,就会产生freelist group block,这些block紧跟在segment header block之后,假设我们设置了storage(freelists 4 freelist groups 2),那么该segment的第一个块是segment header
block,第2,3个块则都是freelist group block。首先在segment header block中存在1个free list,这个free list就被称为Super Master Free list或者Segment Master Free list。而在每个freelist group block中又都存着1个MFL,还存在4个PFL,每个freelist group block块的剩余空间则全部留给TFL使用。在单个instance中进程选择freelist group的算法是(P % NFB) + 1 。其中P表示DML操作进程的Process ID,可以从v$process.pid字段中取得。NFB表示freelist groups 参数定义的Freelist Groups数量。
master free list或者segment free list简称为MFL,在segment被创建的时候自动生成的,如果我们在创建segment时没有指定freelists参数,或者指定freelists=1,都是生成这个MFL。MFL对于每个segment来说有且只有一个。如果指定freelists>1,产生的就不是MFL,而是PFL (process free list)。无论是不是有PFL,对于每个segment来说都仍然存在1个MFL。也就是如果我们定义freelists等于2的话,那么在segment header block中将总共存在3个freelist,其中1个是MFL,另外2个是PFL。这个级别的free list中的空闲块只能被一个进程读取。想象一下,如果当前系统对于某张表最多同时会有10个进程同时作insert操作,那么我们设置freelists=10,将能尽量满足每个进程都能够使用专属于自己的free list,无疑通过这样的手段我们缓解了free list的争用。一个进程到底会使用哪个PFL,oracle内部的算法是:(P % NFL) + 1其中P表示DML操作进程的Process ID,可以从v$process.pid字段中取得。NFL表示freelists存储参数定义的PFL数量。
transaction free list在Oracle中事务(transaction)是一个重要的概念,每次DML操作,事务的开始都是自动的,而我们可以通过commit或者rollback来标志一个事务的结束。一个进程(或者说一个用户会话)有自己的PFL,然后一个进程可能会执行很多的事务,于是又出现了这个级别的free list,这就是transaction free list,简称为TFL。TFL是动态产生的,只有当DML语句(比如delete或者update)使block占用量降到pctused参数指定值之下时才会生成TFL,一个TFL只属于一个事务,而一个事务也只会有一个TFL,一个事务没有提交之前,此事务的TFL上的空闲块不会被其它事务使用。但是可以立刻被本事务使用(此时这些空闲块被称为previously freed blocks)。每个segment最少可以有16个TFL,同时只要有需求就会动态增加TFL数量,除非达到了segment header block size的限制。当没有空间允许新的事务得到自己的TFL时,这个事务就必须等待其它的事务提交并释放TFL。等待哪个事务的算法是:(P % NFL)其中P表示DML操作进程的Process ID,可以从v$process.pid字段中取得。NFL表示当前的TFL总数量。
Super Master Free list或者Segment Master Free list这个级别的free list只有在设置了多个freelist groups时才会出现。当我们设置freelist group>1,就会产生freelist group block,这些block紧跟在segment header block之后,假设我们设置了storage(freelists 4 freelist groups 2),那么该segment的第一个块是segment header
block,第2,3个块则都是freelist group block。首先在segment header block中存在1个free list,这个free list就被称为Super Master Free list或者Segment Master Free list。而在每个freelist group block中又都存着1个MFL,还存在4个PFL,每个freelist group block块的剩余空间则全部留给TFL使用。在单个instance中进程选择freelist group的算法是(P % NFB) + 1 。其中P表示DML操作进程的Process ID,可以从v$process.pid字段中取得。NFB表示freelist groups 参数定义的Freelist Groups数量。
相关文章推荐
- Freelists and Freelist Groups (文档 ID 1029850.6)
- oracle 中的pctused、pctfree、inittrans、MAXTRANS、FREELIST GROUPS 和FREELISTS参数
- 关于Freelists和Freelist Groups的研究(修订版)- freelists是否已经过时
- 关于Freelists和FreelistGroups的研究(修订版)-什么是freelists
- List of free and open source SCADA software
- 关于Freelists和Freelist Groups的研究(修订版)- freelists存储在哪儿
- 关于Freelists和FreelistGroups的研究(修订版)-freelists是否已经过时
- 关于Freelists和Freelist Groups的研究【转】
- Summary on Visual Tracking: Paper List, Benchmarks and Top Groups
- 关于Freelists和Freelist Groups的研究(修订版)- freelists存储在哪儿
- [转]oracle学习笔记一:pctfree、pctused and freelist
- 关于Freelists和Freelist Groups的研究(修订版)- 有多少种free list
- List of free and open source operating systems (In alphabetic order, 345)
- [Freelists Internal] 关于Freelists和Freelist Groups的研究
- 关于Freelists和Freelist Groups的研究(修订版)- 有多少种free list
- 关于Freelists和Freelist Groups的研究
- A List of No Ratio Trackers, And The Ratio Free System
- [Freelists Internal] 关于Freelists和Freelist Groups的研究