ITPub博客

首页 > Linux操作系统 > Linux操作系统 > LMT 本地管理表空间

LMT 本地管理表空间

原创 Linux操作系统 作者:tolywang 时间:2010-07-27 11:14:57 0 删除 编辑

LMT :  本地管理表空间,不使用FET$及UET$, 而是在表空间的数据文件头部选出6个block(从第
3个block到第8个block), 在其中存放bitmap来管理extent的分配及释放。

数据文件头部的bitmap由多个bit组成,比如 11001010001100111001000001,每个bit位对应一个extent,
或者多个bit位对应一个extent(因为有时一个extent过大)。 当进程需要extent时,只需要扫描文件
头部的bitmap, 找到0位,分配bit位对应的可用空间,更新bit值为1,删除extent则相反。

LMT的优点: 克服了DMT的缺点,没有递归SQL,只需要更新文件头部,无事务,速度快,没有锁及undo,
redo, 且不存在合并空间的问题。 Oracle9i开始需要创建LMT,而不是DMT . 

10g数据文件头中会有64K的空间用来存放bitmap,其他空间都可用,所以我们在建立数据文件大小
的时候,需要在uniform. size 整数倍的前提下再加入这64K的大小,以免浪费空间 。  

 

---------------------------------------------------------------------------------------
备注:

The locally-managed (bitmapped) tablespace (LMT) file has the following structure:

1、File header: 1 block
2、Bitmapped file space header: 1 block
3、Head portion of bitmap blocks: N blocks
4、Useful file blocks: U units (A unit is a number of blocks.)
5、Tail portion of bitmap blocks: M blocks

If a Unit = B blocks, then the total file size = 1 + 1 + N + U*B +M.
The operating system file allocated will in some cases be file size + 1 block for
the OS header.


---------------------------------------------------------------------------------------

 

一直疑惑的问题是 :

1.    存放bitmap 的大小一般是 64K 。   LMT 表空间的数据文件头部选出6个block(从第3个block到第8个block), 在其中存放bitmap来管理extent的分配及释放。 那么6个block 和 64K 应该以哪个为准, 因为定义库的block size 是不一样的, 还有64K 包含了哪些内容, 应该不止 bitmap 部分的大小吧 ?  因为 64K 大小不是 6 的倍数 (假设block size 是4K, 8K , 16K  等)  。 

2.  “ 每个bit位对应一个extent, 或者多个bit位对应一个extent(因为有时一个extent过大) ” , 这里的 “多个bit位对应一个extent ,  因为有时一个extent 过大” 如何解释 ? 

 

 

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/35489/viewspace-669582/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    14695628