MFL,PFL,TFL
MFL, PFL ,TFL
love will remembermaster free list或者gment free list简称为MFL,在gment被创建的时候⾃动⽣成的,如果我们在创建gment时没有指定freelists参数,或者指定freelists=1,都是⽣成这个MFL。MFL对于每个gment来说有且只有⼀个。如果指定freelists>1,产⽣的就不是MFL,⽽是PFL (process free list)。⽆论是不是有PFL,对于每个gment来说都仍然存在1个MFL。也就是如果我们定义freelists等于2的话,那么
孔子语录翻译
lengthwi在gment header block中将总共存在3个freelist,其中1个是MFL,另外2个是PFL。这个级别的free list中的空闲块只能被⼀个进程读取。想象⼀下,如果当前系统对于某张表最多同时会有10个进程同时作inrt操作,那么我们设置freelists=10,将能尽量满⾜每个进程都能够使⽤专属于⾃⼰的free list,⽆疑通过这样的⼿段我们缓解了free list的争⽤。⼀个进程到底会使⽤哪个PFL,oracle内部的算法是:(P % NFL) + 1其中P表⽰DML操作进程的Process ID,可以从v$process.pid字段中取得。NFL表⽰freelists存储参数定义的PFL数量。parameter是什么意思
唐老鸭和米老鼠动画片全集transaction free list在Oracle中事务(transaction)是⼀个重要的概念,每次DML操作,事务的开始都是⾃动的,⽽我们可以通过commit或者rollback来标志⼀个事务的结束。⼀个进程(或者说⼀个⽤户会话)有⾃⼰的PFL,然后⼀个进程可能会执⾏很多的事务,于是⼜出现了这个级别的free list,这就是tra
请一对一外教
nsaction free list,简称为TFL。TFL是动态产⽣的,只有当DML语句(⽐如delete或者update)使block占⽤量降到pctud参数指定值之下时才会⽣成TFL,⼀个TFL只属于⼀个事务,⽽⼀个事务也只会有⼀个TFL,⼀个事务没有提交之前,此事务的TFL上的空闲块不会被其它事务使⽤。但是可以⽴刻被本事务使⽤(此时这些空闲块被称为previously freed blocks)。每个gment最少可以有16个TFL,同时只要有需求就会动态增加TFL数量,除⾮达到了gment 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紧跟在gment header block之后,假设我们设置了storage(freelists 4 freelist groups 2),那么该gment的第⼀个块是gment header block,第2,3个块则都是freelist group block。⾸先在gment header block中存
popsoft
在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的算法无与伦比英文
bsaa是(P % NFB) + 1 。其中P表⽰DML操作进程的Process ID,可以从v$process.pid字段中取得。NFB表⽰freelist groups参数定义的Freelist Groups数量。
对于 freelist 和 freelist group , Tom 在《 Effective Oracle by Design》中有个⽐喻,⾮常形象。想象 有⼀台饮⽔机和源源不断的急需喝⽔的⼈们,⼀台饮⽔机就代表⼀个 free list ,⽽⼀个想喝⽔的⼈ 就是⼀个准备向 gment 中插⼊数据的会话。如果我们只有⼀个饮⽔机,那么所有想喝⽔的⼈都 必须要排成⼀队,然后前⼀个喝完了下⼀个才能喝,这就产⽣了争⽤。设想⼀下我们现在放置了 10 个饮⽔机,很明显⼈们可以排到 10 个队伍中的任何⼀个队伍⾥,毫⽆疑问效率⼤⼤加快了。这 时瓶颈⼜出现了,就是如果⼀个饮⽔机⾥的⽔被喝完了,就得给这个饮⽔机加⽔,此时如果只有 ⼀个加⽔员(这就是⼀个 freelist group ),那么加⽔的速度可能就会跟不上了,添加 freelist group 就是增加加⽔员,增加到 2 个,每个⼈负责 5 个饮⽔机(体现在参数上,是 freelists 5 freelist groups 2 ), OK ,效率⼜提升了。
>tightly