ASSM和PCTUSED

相信很多人都知道,当使用了ASSM(auto segment space management),PCTUSED将不在有效。

但是,有多少人告诉你,为什么在ASSM中PCTUSED被忽略。

ASSM之前,Oracle使用freelist,freegroup来管理空闲的block。哪如何决定一个block是否可以加到freelist上?假设,如果block的空闲小于或等于PCTFREE,即从freelist上取消block,当做了一个delete或者update操作后,block的空闲比例大于20%,即又把该block加到freelist上,这样虽然可以最大化的使用block的空间,但是却加重了freelist的维护成本(频繁地从freelist上摘除和添加block,而且是排它的操作)。

这也就是为什么引入PCTUSED的原因,牺牲空间来换取维护freelist的效率。在block的空闲比例在PCTFREE和1-PCTUSED之间,有一个缓冲的空间。

ASSM抛弃了freelist管理空闲block的方法,换用了三级位图,使用extent的头块(不是每一个extent头块)来管理free block。这种设计,修改任一block空闲与否的状态,影响面非常小。频繁修改状态都不会再是问题,因此PCTUSED在ASSM下被忽略。

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Rust 包装 objc Block

Block简介使用objc开发App时,经常会使用到Block,这个语法糖是Clang(https://clang.llvm.org/)给C语言实现的一个拓展.Block

Oracle 统计表空间和对象历史增长量

最近7天内每天(某个)表空间的增长量colTS_NAMEfora15SELECTa.snap_id,a.rtime,c.tablespace_namets_name,round(a.tablespace_sizec.block_size/1024/1024/1024,

Ruby中的each collect map inject

说明:each——连续访问集合的所有元素collect—从集合中获得各个元素传递给block,block返回的结果生成新的集合。map——同collect。inject——遍历集合中的各个元素,将各个元素累积成返回一个值。arr\1,2,3\1)arr2arr.each{|elem

OC中block使用相关

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义的返回值以及块的主体(也就是可以执行的代码)。下图是如何把块变量赋值给一个变量的语法讲解:!(http://static.oschina.net

Magento Block的几种调用方式

MagentoBlock的三种显示方式1。最常见的一种方式:在layout文件中配置,然后在.phtml模板文件中输出。<cms_page<referencename"content"<blocktype"cms/page"name"cms_page"</block</