2022年2022年逻辑存储结构-段区块 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年逻辑存储结构-段区块 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年逻辑存储结构-段区块 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库逻辑存储结构1 / 11数据库逻辑存储结构数据库的物理存储结构对应一系列的物理文件, 这部分主要描述的是数据存储的实际位置, 不过数据如果存储, 是以什么结构存储到数据文件中 , 则取决于数据库的逻辑存储结构 .Oracle数据库在执行操作时, 并不是以数据文件为单位, 而是从逻辑上定义出一组结构, 操作的数据可以一步步细分不同的存储单元,oracle 操作数据的过程 , 实际上就是对这些不同级别的存储单元进行维护和管理的过程. - 数据库的存储结构分为: 段(segment). 区(extent)和数据块 (block) 段(segment): 段是数据库内占用空间的对象. 它们使用数
2、据库中数据文件内的空间. 一个 tablespace 对应多个 segment, 一个 segment只能对应一个 tablespace,但可以跨越对应tablespace 下的 datafiles - 段类型 : 表(table):是数据库中最重要的段,也是数据库内存储数据的最常用方法.表段用于存储非集簇且未分区的表中的数据. 表段中的所有数据都必需存储在一个表空间内. 表分区 (table partition):当一个表的规模很大,且并发操作非常频繁时,可以把这样表划分成若干个分区(partition).而每个分区驻留在不同的表空间.每个分区的存储参数都可以单独定义.可以通过把每个分区放在
3、不同磁盘上以提高并行操作的能力, 从而达到改进系统效率的目的. 对于分区表 , 当一个分区损坏了并不影响其他分区的操作. 提示 : 要使用分区表 , 必需使用 oracle 的企业版分区表的选项(partitioning),oracle提供了大批专门命令来管理和操作分区表. 簇(cluster):簇与表一样 , 是一种数据段类型. 簇内的行是基于键列值存储的. 一个簇可以包含一个或多个表. 一个簇的表属于同一个段并且共享相同的存储特性. 可以通过索引或者三列算法来访问集簇表内的行. 提示 : 簇少用 ,这样可以减少管理和维护的负担, 也可以使跨 IT平台的移植变的更加容易. 索引(index)
4、:索引段的目的是加快基于某一特殊( 索引关键字 )的查询速度 , 这样查询可以很快查找到某一个表中所需数据的准确位置. 一个特定索引的所有索引记录都记录在一个索引段中. 如在吗果一个表有三个索引, 那么就会有三个对应的索引段, SQL conn erm/erm Connected. SQL select * from tab; no rows selected SQL select segment_name,segment_type from user_segments; create table t (id int primary key,name char(10); select segm
5、ent_name,segment_type from user_segments; SEGMENT_NAME SEGMENT_TYPE - - SYS_C005144 INDEX =t 表主键的索引段T TABLE 索引分区 (index partition):当在一个大型或超大型表上创建索引时, 那这个索引也可能很大, 所以也可以像分区表一样, 将该索引划分为若干个分区 , 每个索引分区为一单独的段. 这样一个索引可以分布在不同的表空间上. 但每个索引分区 ( 段)只能存放在一个表空间中. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
6、- - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 数据库逻辑存储结构2 / 11提示 : 引入索引分区的目的也是减少输入或输出的竞争, 使用索引分区 , 必须使用 oracle 的企业版分区表的选项. 索引表 (index-organized table):如果用户的查询主要是基于索引关键字, 那么在索引树的叶子节点中的数据行的地址部分可以存放真正的数据 , 这种存储结构称为索引表. 索引表优点 : 可以大大的加快基于索引关键字的查询索引表缺点 : 索引表这种存储结构不适合DML( 数据操纵语句 ) 操作非常频分的表DML 语言
7、不隐含 commit语句的 , 因此需要用户手动提交对数据库的修改. 临时段 (temporary segment):当在 SQL 语句中使用了诸如ORDER BY,GROUP BY或DISTINCT等语句或关键字时,oracle就要试着在内存中进行排序 , 如果内存中排不下就把中间的结果写到磁盘上, 该磁盘区就是临时段. 还原段 (undo segment):还原段 9i 之前称为回滚段(rollback segment),用来存放事务 (transaction)对数据库所做的改变.oracle涉及到一致性读操作 . 也就是当一个用户对一个表进行修改, 而这时另一个用户对表做DML 操作时
8、, 对任何数据块或索引块改变之前, 所有的原始值都将存放到还原段中. 这样做不但允许用户可以还原所做的变化,而且还可以在另一个用户对数据进行DML 操作的同时 , 允许对该行数据进行读操作( 读的是存放到还原段的原来的数据) 大对象段 (LOB segment): 大对象 (LOB)数据类型是从 8i 开始引入的 , 用户存储例如大的正文文档, 图像或音像信息的. 在一个表中可以有一列或多列 LOB 数据类型 . 如果 LOB 类型的列很大 .oracle就会将该列的值单独存放在另一个段中,该段就称为大对象段, 在表中只包含一个指向相应大对象数据的指针( 地址 ) 嵌套表 (nested ta
9、ble):嵌套表是一种特殊表,该表中某一列又由一个用户定义的表组成, 即表中套表 , 被称为嵌套表的内表呗存放在另外一个段中嵌套表少用自举段 (bootstrap segment):是在数据库被创建时由sql.bsq脚本创建 ,也被称作为高速缓存段.自举段 DBA 无法查询或修改, 并且不需要dba维护 . - 存储子句优先级: 段级别定义了存储参数, 将大于表空间定义的存储参数, 但表空间一级的参数MINIMUM EXTENT或UNIFORM SIZ 除外 . 当段没有显示的定义存储参数,将默认为表空间一级做定义的参数当表空间一级没有显示的定义存储参数,则使用 oracle 系统默认的存储参
10、数注意事项 : 如果指定了表空间的最小区(minimum extent)大小 , 则该大小适用于将来分配给该表空间内段的所有区. 某些参数不能在表空间一级定义 , 而只能在段级别定义如果对存储参数进行了修改, 新的存储参数只适用于还没有分配的区- 区的管理区是表空间内某个段使用的一块空间, 它是由连续的 oracle 数据块组成 . 引入区的目的: 为了提高系统的效率, 利用区来进行磁盘空间分配可以大大的减少磁盘分配的次数.oralce的磁盘分配算法是一个递归算法.而递归算法效率本身就比较低, 减少磁盘分配的次数, 也就等于减少了该递归发 算法使用的次数 . 名师资料总结 - - -精品资料欢
11、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 数据库逻辑存储结构3 / 11当段处于以下情况时分配区当一个段被创建时(created)时当一个段被扩展(extended)时当一个段被改变时(altered)时当段处于以下情况时回收区当一个段被删除(dropped) 时当一个段被改变时当一个段被截断(truncated)时=删除表数据 , 并且释放数据块空间创建表空间时 , 在该表空间中的数据文件就包含了一个文件头, 这个头就是该数据文件的第一个或前几个数据块
12、. 段所使用的的连续磁盘空间被称作使用区(used extent)未使用的称作空闲区(free extent),当一些段释放了磁盘空间时, 这些释放的区段就被添加到所在表空间中可以使用的空闲区中. - 数据库块 : oracle 最小的存储单位就是数据库块, 也称作 oracle 数据库块 .oracle数据块是由一个或多个操作系统块组成,其大小在表空间创建时, 设置DB_BLOCK_SZIE为默认 oracle 数据块的大小 . 可以使用命令在操作系统级别查看数据库参数文件里默认的db_block_size值或是从数据库里使用 dba_tablespaces 视图来查看当前数据块大小orac
13、lefs11 $ strings $ORACLE_HOME/dbs/spfilemfs.ora |grep -i db_block show parameter db_block_size select TABLESPACE_NAME,BLOCK_SIZE from dba_tablespaces; 在数据库里使用dba_tablespaces视图- 数据块大小在8i 前的版本中 ,oracle只能有一种数据块, 其大小由 DB_BLOCK_SIZE设定 ,9i 版本开始 , 支持多种数据块大小,9i 开始 oracle 数据库可使用一个标准数据块和4个非标准数据块. - 标准数据块标准数据块
14、的大小被用于系统表空间和临时表空间. 数据库中标准数据块的大小是在数据库创建时, 由初始化参数 DB_BLOCK_SIZE设置 , 如果要修改标准块大小, 只能重建数据库提示 : 除非有特别的说明, 一般将最常用的数据块大小选为标准数据块大小, 而且标准块大小还用作表空间默认块大小. 如果没有说明 , 默认数据块的大小是是与操作系统相关的, 在一般情况下这个默认值最合适. 非标准数据块的大小为 2的次方 , 其值在 2-32kb 之间 , 即2,4,8,16,32 提示 : 虽然非标准块为2,4,8,16,32 共五种 , 但一般 32位的 windows或linux 操作系统上 oracle
15、 数据块使用的是8, 所以在 32位系统中 , 非标准名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 数据库逻辑存储结构4 / 11块为 2,4,16,32 共四种可以使用. 也就是 2,4,8,16,32这五种值任意一个设置成为标准块的值时,其它值为可选的非标准块值. DB_CACHE_SIZE参数 用来执行标准块大小缓冲区的高速缓冲区大小, 它的最小值为一个granule( 颗粒 )(4MB or 16MB) 默认值为 4
16、8MB.该高速缓存的数据块大小为标准块大小, 由DB_BLOCK_SIZE所定义 .8i 之前版本中的 DB_BLOCK_BUFFERS初始化参数已被 DB_CHCHE_SIZE初始化参数所取代 . 提示 :granule 是一个连续虚拟内存分配单位,granule的大小取决于估算的SGA 的总大小 , 这个总大小是根据SGA_MAX_SIZE的参数值计算的,如果估算的 SGA 的大小 show parameter db_block_size NAME TYPE VALUE - - - db_block_size integer 8192 SQL show parameter db_16 NA
17、ME TYPE VALUE - - - db_16k_cache_size big integer 0 SQL create tablespace tbs 2 datafile 3 /u01/app/oracle/oradata/mfs/tbs_01.dbf 4 size 10m blocksize 16k; create tablespace tbs * ERROR at line 1: 第 1 行出现错误 : ORA-29339: tablespace block size 16384 does not match configured block sizes ORA-29339: 表空间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年逻辑存储结构-段区块 2022 逻辑 存储 结构 区块
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内