【数据库设计与开发】数据存储与数据管理.ppt

上传人:bao****ty 文档编号:144027653 上传时间:2020-09-04 格式:PPT 页数:32 大小:128.50KB
返回 下载 相关 举报
【数据库设计与开发】数据存储与数据管理.ppt_第1页
第1页 / 共32页
【数据库设计与开发】数据存储与数据管理.ppt_第2页
第2页 / 共32页
【数据库设计与开发】数据存储与数据管理.ppt_第3页
第3页 / 共32页
【数据库设计与开发】数据存储与数据管理.ppt_第4页
第4页 / 共32页
【数据库设计与开发】数据存储与数据管理.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《【数据库设计与开发】数据存储与数据管理.ppt》由会员分享,可在线阅读,更多相关《【数据库设计与开发】数据存储与数据管理.ppt(32页珍藏版)》请在金锄头文库上搜索。

1、北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.数据存储与数据管理,前面重点讲数据库的逻辑模式,本章介绍数据库物理模式设计中的数据存储技术和保证数据库正常运行的安全性、完整性控制和数据库恢复技术。 2.1数据存储 2.2数据管理,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1数据存储,数据存储技术的重要目标就是尽可能减少读写数据所需的磁盘访问(I/O操作)次数,尽可能使数据驻留在内存中。 均衡负载,提高效率! 2.1.1数据的磁盘存储 2.1.2索引 2.1.3聚簇索引与非聚簇索引 2.1.4散列(HASH)簇存储,北京邮电大学软件学院 郭文

2、明 2003.06,数据库设计与开发讲义,2.1.1 数据的磁盘存储,2.1.1.1磁盘访问是面向页面(数据块)的 2.1.1.2ORACLE的磁盘资源分配,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.1磁盘访问是面向页面(数据块)的,基本表中的行和索引是存储在磁盘上的。磁盘由若干盘片组成,盘片有磁道、扇区,若干盘片的磁道组成柱面。 一次磁盘页面访问包括: 寻道时间:磁盘臂移动到指定柱面的时间; 旋转延时:磁盘旋转到指定扇区的时间; 传输时间:读写磁盘页面数据的时间。 磁盘访问时间主要是移动磁盘臂到指定位置所需时间。 如果两个要连续读取的数据块在磁盘上紧挨着

3、,则寻到时间很短,如果两数据在同一柱面上,那末寻到时间为零。,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.1磁盘访问是面向页面(数据块)的,在读写磁盘的一个页面的时间里,可以执行百万条的程序指令与内存交换数据。相对于内存而言,磁盘访问速度是很慢的,我们要尽量减少磁盘访问的次数。 磁盘访问基本都是“面向页面的”,磁盘页面也称数据块。磁盘页面的页面地址可以是连续的整数,也可以由设备号、柱面号、磁盘表面号和开始扇区地址组成。 ORACLE一个页面(块)为2KB,DB2 UDB标准页面为4KB(DB2 UDB还支持8KB、16KB和32KB)。,北京邮电大学软件学院

4、 郭文明 2003.06,数据库设计与开发讲义,2.1.1.1磁盘访问是面向页面(数据块)的,数据库系统按照给定的磁盘页面(块)地址读取磁盘页面,把数据放到内存的缓冲区(缓冲区是在数据库系统初始化时候建立的)中。每读入一个页面都在散列后备表中记录该页面在缓冲区中位置,每一次读取页面时,首先在散列后备表中查询该页面是否已在缓冲区中,如果在缓冲区则忽略磁盘访问。 缓冲区采用最少使用算法(LRU)管理可用空间,当缓冲区需要自由空间时,最少使用的页面将被移出.最频繁使用的数据被保存在缓冲区中。 为了提高效率,扩大内存的同时,有必要对访问进行组织(表的磁盘空间分配),以使所需信息都在同一个页面上。,北京

5、邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,不同商业数据库系统的磁盘空间分配体系结构不大相同.以下说明ORACLE中的磁盘资源分配。 CREATE TABLESPACE tsname DATAFILE dfname1,dfname2 DEFAULT STORAGE storage ONLINE|OFFLINE; 表空间是ORACLE数据库基本的分配介质,所有请求磁盘空间的表、索引和其它对象都在表空间中有对应的磁盘空间。表空间对应于一个或多个操作系统文件,可跨越磁盘设备。 所有数据库产品都有类似于表空间的结构来隔离用户和操作系统,它

6、代表一块可以使用的磁盘空间。DB2称为表空间,INFORMIX称为数据库空间。,联机|脱机(立刻能不能用),北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,ORACLE数据库应包含多个表空间.SYSTEM表空间是在Create Database时自动创建的,SYSTEM表空间包含数据字典,也可包含用户对象.但DBA应创建几个表空间分别存储相应的对象. 当CREATE TABLE时可使用子句TABLESPACE指定表空间. 创建表和索引时,其表空间分配是以数据段对象和索引段对象标识的. 创建数据段和索引段时,将从表空间中分配一个初始

7、的磁盘空间,称为初始区域(缺省10KB).当写满该区域后,再分配一块区域,称为下一区域.,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,每一块区域都在一个文件上,一个段可以由来自多个文件的区域组成.每一块区域大小都是块大小的整数倍。,数据库存储结构示意图,库 表空间 文件 表 段 区间,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,表空间由一个或多个在DATAFILE子句中指定的操作系统文件组成. DATAFILE dfname SIZE n K|MREUSE A

8、UTOEXTEND OFF| AUTOEXTEND ON NEXT n K|M MAXSIZE UNLINITED|n K|M ,dfname 没有SIZE且数据文件存在,ORACLE使用该文件; 有SIZE,ORACLE创建一新文件(以前有则覆盖); 有SIZE且有REUSE,ORACLE重用旧文件. AUTOEXTEND子句决定可否自动扩展文件大小; NEXT定每次申请区域大小,MAXSIZE定最大尺寸.,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,DEFAULT STORAGE指定该表空间上的段的缺省磁盘分配区域方案,所

9、包含段可以不使用该方案而自行确定. DEFAULT STORAGE(INITIAL K|MNEXT n K|M MINEXTENTS nMAXEXTENTS n|UNLIMITED PCTINCREASE n) INITIAL初始区域(缺省为10KB);NEXT下一区域大小(缺省为10KB);PCTINCREASE后续区域比前一区域大的百分比,0为不增长,缺省为50. MINEXTENTS,MAXEXTENTS最大最小区域数. 区域大小是一个数据块中字节数的整数倍(最小为2048B,最大为4095MB).,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 OR

10、ACLE的磁盘资源分配,创建了表并分配了区域,记录总是一个接一个地插在第一个区域的第一个块里,直到第一个区域用完,系统再分配一个新的区域. 每一个行是由包含了列值的连续字节组成,在块中的布局如下图: 块头包含块地址段类型等,行目录有行在块中位置,可用空间留在中间. 行可用块地址及行目录唯一标识,此为行指针,。ORACLE中称ROWID,DB2中称RID.,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,ORACLE中ROWID有两种形式(限制的/扩展的): BBBBBBBB.RRRR.FFFF(块号.行号.文件号) OOOOOOF

11、FFBBBBBRRR(段号文件号块号行号) ROWID可以查看表中行是怎样存储在磁盘上的; 通过ROWID访问某一行是最快的方法. DB2中行是不能超过一个页面的(4KB页面最大行长度4005字节),ORACLE中行允许跨越块存放.如果块中无法放下一行时,该行被切成片段. ORACLE中CREATE TABLE的PCTFREE子句可以减少出现行片段的概率. 减少片段是进行数据库重组织的原因之一.,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,CREATE TABLE tablename () TABLESPACE tsnameS

12、TORAGE() PCTFREE nPCTUSED n STORAGE子句:针对该表不用表空间的区域分配方案,而专门由该STORAGE存储子句指定. PCTFREE决定每个块上可以有多少空间用于行的插入(缺省10,n为0到99):当块中有(100-n)%的空间使用后,新的插入被停止;留出的空间以备Varchar类型用或Alter table时插新列. PCTUSED决定当已用空间降到n%时,新的行可继续插入(缺省40,n为1到99).,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.1.2 ORACLE的磁盘资源分配,ORACLE磁盘分配总结: 表空间包含一系列数据

13、库对象(表、索引等),对应若干操作系统文件,多个表空间可以让不同磁盘设备起不同作用,减少I/O冲突,另外数据备份可在表空间一级进行. 表对应表空间中数据段,可以自行定义自己的磁盘存储方案,也可用所在表空间的存储方案. 段包含一系列区域,区域是块的整数倍,段的存储方案主要由初始区域、下一个区域和区域增长率最大最小区域数决定. 块是基本的I/O操作单元,尽可能将相临数据存放在一个块中,避免碎片的产生是好的存储模式的评判标准.,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.2 索引,数据库索引与驻留内存的数据结构有相似之处,但数据库索引包含数据量大,它是存放在磁盘上的,

14、只有访问时才调入内存. 索引由一系列存储在磁盘上的索引项组成,索引项第一列是索引键(keyval),第二列是行指针(ROWID).索引项按索引键排序.当数据发生更新时,索引也更新.索引键和表的主键不是一回事. 数据库索引设计的重要目标是减少读数据所需的磁盘访问次数. B树是当今数据库中使用最广泛的索引结构,它是DB2唯一的索引结构;ORACLE的主要索引结构,ORACLE还有散列聚簇(Hash Cluster).,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.2 索引,2.1.2.1 B树(B+树)结构 2.1.2.2 索引节点布局和可用空间 2.1.2.3 OR

15、ACLE和DB2 UDB的Create Index 2.1.2.4 ORACLE位图索引,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.2.1 B树(B+树)结构,例:假设表中有一百万条记录要建索引,假设索引项占8个字节(ROWID占4个字节,键值占4个字节),一个2KB的块可存放2048/8=256个索引项,共需1000000/256=3907个数据块. 二分法查找: 3907个数据块顺序存放,第一次读入第3907/2=1954块数据,检查keyval,第二次读入1954块数据中的第1954/2=977块数据,检查keyval,第12次的I/O操作才能将包含所找

16、键值的数据块调入内存.再根据ROWID去提取数据,再加一次I/O操作. 二分法查找不停地I/O操作.挺费劲!,北京邮电大学软件学院 郭文明 2003.06,数据库设计与开发讲义,2.1.2.1 B树(B+树)结构,B树结构:np为指向下层节点块的指针,sepkeyval为分隔符键值,假定目录项所需空间与叶子相同.,Keyval,ROWID,np,sepkeyval,np,sepkeyval,np,sepkeyval,np,sepkeyval,Keyval,ROWID,Keyval,ROWID,根节点,1块,2层目录,16块,叶节点,3907块,B树结构存储索引:一百万个索引项建起了三层的B树(叶节点的层号称为B树的深度),第一次调入根块,比较后第二次调入2层目录的某一块第3次I/O操作即可找到键值数据块.当然根据ROWID去提取数据,还得再加一次I/O操作. B树结构存储索引使查

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号