暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Segment、Extent、Block

木底木叉 2020-09-22
639

CREATE SMALLFILE TABLESPACE "DATA" DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\data_01.dbf' SIZE 100M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE 1000M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

oracle如何分配区(区管理)

dba_extents数据取自segment_header

EXTENT MANAGEMENT LOCAL

  • 字典DMT

利用基表sys.fet$和sys.uset$记录区的使用情况。

- 1、频繁truncate/drop或insert时容易产生基表的争用。-2.SMON来不及合并之前容易产生很多碎片。

  • 本地LMT

在数据文件中加入位图块来管理每个区。

oralce如何使用区(段管理)

SEGMENT SPACE MANAGEMENT AUTO

  • 自动(ASSM)

利用位图块L1 BMB叶节点(直接管理块,16到1024个块),L2 BMB 枝节点,L3 BMB跟节点。大量DML操作也会引起位图块争用,解决方法是插入大量数据提高高水位线。

  • 手动(MSSM)

利用free list, freelist groups,pctused控制如何分配段中的数据块。当进程需要大量的块分配,free list容易引起段头争用即buffer busy waits。

块结构

db_block_size 默认8k

结构

  1. 块头(地址、段类型)

  2. 所属表、表空间

  3. 事务槽ITL

  4. 行目录

  1. 数据行

  • 行头信息(锁信息)

  • 列宽+列数据

前4项在块中从前往后排列

行数据信息在块中由尾部向头部转移

  • 行链接(一个块放不下,放俩快组织一个块)(只能修改块大小)

  • 行迁移(更新数据时发现空间不够,用指针指向别的地方去了) 重新导入导出(重新整理表)

    为何不把新数据全部放入新块?

    保持rowid一直嘛,不然索引没得玩。




文章转载自木底木叉,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论