2020/7/111第6章数据库的物理设计讲课内容前面重点讲述了数据库的高层模型,主要集中在概念层(E-R模型)和逻辑层(关系模型)上。本章将简单地介绍与DBMS底层密切相关的数据库的物理设计。数据库性能的好坏很大程度上取决于数据库的物理设计,而不仅仅是关系模式设计的好坏、SQL语句写的好坏!■数据库设计的六阶段■数据的存储结构■物理库的物理组织■数据的存取路径■物理设计的内容■物理设计的相关因素■物理设计的目标■本章总结2020/7/112第6章数据库的物理设计什么是数据库设计?对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足用户的各种需求(信息要求和处理要求);是建立数据库及其应用系统的技术,是信息系统开发和建设的核心技术;既是一项涉及多学科的综合性技术,又是一项庞大的工程项目:•“三分技术,七分管理,十二分基础数据”是数据库建设的基本规律!2020/7/113第6章数据库的物理设计问题一应用系统的设计与数据库设计之间的关系是什么?2020/7/114第6章数据库的物理设计传统上数据库设计只是应用系统设计的一部分,《软件工程》课会讲述;二者可以同时进行;二者要相互参照、相互补充。发展趋势数据库设计是核心;应用系统设计以数据库设计为中心,围绕着数据库的设计而进行。2020/7/115第6章数据库的物理设计问题二数据库系统(DBS)或者说应用系统的性能调整可以在几个层次上进行?2020/7/116第6章数据库的物理设计硬件不同的硬件:PC、小型机、大型机、机群同一硬件:内存、CPU、硬盘大小、阵列系统软件与硬件密切相关:WINDOWS、UNIX、LINUXDBMS的选择与参数调整:缓冲区大小、检查点的频率数据库的高层设计逻辑设计:模式的规范化与数据划分…物理设计:存储结构、索引、数据分布…2020/7/117第6章数据库的物理设计数据划分Course_schema=(course_name,course_location,course_capacity)水平划分•根据课程容量为小于30人、30-80人、80人以上将相关的表划分成三个子表,以便排课。垂直划分•Course_schema=(course_name,course_location)•Course_schema=(course_name,course_capacity)2020/7/118§6.1数据库设计的六阶段数据库设计的六个阶段需求分析:数据、功能和性能概念结构设计:E-R模型与E-R图逻辑结构设计:将E-R图转换成关系表数据库物理设计:存储结构与存取路径,数据的划分与分布数据库的实施:编程、测试和试运行数据库运行与维护:监控与分析、备份与恢复、重组织与重构造、安全性控制与完整性控制等等2020/7/119§6.1数据库设计的六阶段图示需求收集和分析设计概念结构设计逻辑结构数据模型优化设计物理结构评价设计,性能预测物理实现试验性运行使用、维护数据库2020/7/1110§6.1数据库设计的六阶段数据库设计的三个主要阶段概念设计、逻辑设计、物理设计数据库的三级模式结构外模式(子模式、用户模式)•是数据库用户看到自己的数据视图模式(逻辑模式)•是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据结构内模式(物理模式、存储模式)•是数据库全体数据的内部表示或者底层描述,用来定义数据的存储方式和物理结构2020/7/1111§6.2数据库的物理组织数据库与操作系统文件数据库系统是文件系统的发展,数据库实现的基础是操作系统的文件;对数据库的任何操作最终都要转化为对操作系统文件的操作。物理组织的基本问题如何设计数据库的文件组织如何设计文件中记录的组织方式2020/7/1112§6.2数据库的物理组织举例在MSSQLServer2000中,一个数据库是由三个操作系统文件构成的,它们分别是:•主数据文件:*.MDF•次数据文件:*.NDF•日志文件:*.LDF这些信息存储在sysfiles系统表中。在MSSQLServer2000中,一个表中的记录按以下两种方式进行组织:•堆(Heap):无序•具有簇集索引的表(B+树文件结构):有序2020/7/1113§6.2数据库的物理组织物理组织的对象元数据数据统计数据索引日志物理组织的目标存储效率要高,能节省存储空间;存取效率要高,速度快、代价小,可节省存取时间。2020/7/1114§6.3物理设计的内容物理设计的内容确定数据的存储结构,选择DBMS……确定数据的物理分布(包括数据划分);为数据选择存取路径,即索引的设计;调整和优化数据库的性能,如调整DBMS的某些选项和参数的设置。物理设计的特点不直接面向最终用户;一般的用户不需要了解物理设计的细节;物理设计可以不考虑用户理解的方便性。2020/7/1115§6.4物理设计的目标主要的设计目标有一是提高数据库的性能,特别是满足主要应用的性能要求;二是有效地利用存储空间。在这两个目标中,第一个目标更为重要,因为性能依然是当今数据库系统的薄弱环节,而存储介质却越来越便宜。2020/7/1116§6.5数据的存储结构数据库文件组织及其结构:按照数据、索引、日志来组织文件;在逻辑上数据库文件是页的集合;记录的组织与结构文件中记录的组织有多种形式:•堆、散列、簇集、顺序、B树类记录的存储结构:定长记录变长记录混合记录2020/7/1117确定数据的存储结构的过程就是一个选择什么样的DBMS的过程:网状层次关系•集中式•分布式•并行的•移动的XML(DB2:双引擎)§6.5数据的存储结构一旦DBMS确定之后,数据库的存储结构就确定了。数据库设计人员在这方面能做的事情有限。有些DBMS也提供了一定的灵活性,如createcluster、createindex等2020/7/1118§6.5数据的存储结构确定存储结构的主要因素存取时间维护代价存储空间利用率数据库设计人员常常要对这些因素进行权衡,一般的DBMS也总是具有一定的灵活性供你选择。例如,簇集是把有关的记录集中在一个物理块内或物理上相邻的区域内存放。2020/7/1119§6.6数据的存取路径为什么需要存取路径?数据库必须支持多个用户的多种应用,因而也就必须提供对数据访问的多个入口。也就是说,对存储在磁盘上的同一数据要提供多条存取路径。存取路径的实现方法索引方法:INDEX•B+树索引方法是关系数据库中经典的索引存取方法,使用非常普遍。簇集方法:CLUSTER(ORACLE)哈希方法:HASH(内存/外存)2020/7/1120§6.6数据的存取路径关系数据库中存取路径的特点存取路径和数据是分离的,对用户来说是不可见的;存取路径可以由用户建立、删除,也可以由系统动态地建立、删除。例如:•在执行查询时,DBMS的查询优化器会根据优化策略自动地建立索引,以提高查询的执行效率;存取路径的物理结构通常是顺序文件、B+树文件或散列文件的形式。2020/7/1121§6.7物理设计的相关因素应用的需求应用中事务的内容和事务出现的频率如何?应用需求如何随着应用环境的变化而变化?数据的特性数据库中某个属性值的分布、记录的长度及个数等等;数据的特性是如何随着数据库状态和应用需求的变化而变化?但是,在数据库设计的开始阶段很难准确估计数据的特性。2020/7/1122§6.7物理设计的相关因素综合因素在进行数据库的物理设计时还必须考虑DBMS、操作系统及计算机硬件的特性:•DBMS只是整个计算机系统负荷的一部分;•DBS的性能不但取决于数据库的设计,而且与计算机系统的运行环境有关:计算机系统是单用户的还是多用户的?数据库系统是分布的还是集中的?磁盘是数据库系统专用的,还是全系统共享的?诸如此类的问题……2020/7/1123§6.7物理设计的相关因素物理设计的调整在进行数据库的物理设计时,可供选择的方案很多。例如:•各种文件结构和存取路径的选择,就可以形成庞大的组合;•要穷尽各种可能,寻求最佳设计,是不可能的。数据库设计和一般产品的设计不一样:•数据库设计只提供一个初始设计,在数据库运行过程中根据用户的要求和实际情况不断地调整;•过分追求所谓的精确设计,企图一次成功,不符合数据库应用的特点。2020/7/1124§6.7物理设计的相关因素物理设计的过程不断变化的需求贯穿着整个应用的开发:•物理设计是一个螺旋上升的过程,当然有时也会有反复,即推倒重来。物理设计的工具直到最近DBMS才提供工具帮助人们进行数据库的物理设计和调整:•微软的SQLServer有一个调整向导,它可以对索引的生成和删除给出建议;•IBMDB2V6也有一个调整向导,OracleExpert对全局的参数给出一个推荐的值。2020/7/1125举例:全国人口查询系统2020/7/1126全国人口查询系统问题描述公安部准备将全国各省市的人口基本信息采集入库,目前已确定每个具有身份证的年满16岁的中华人民共和国公民的基本信息包括两部分:•文本信息:大约150K个字节•图象信息:大约50K个字节建成后的系统供全国所有可能的用户使用:•企业、学校、政府、旅店和其他……系统的主要功能就是按照条件进行查询;系统中的数据不会频繁地被更新!2020/7/1127全国人口查询系统设计问题对于这样一个要求十分简单的查询系统,你认为数据库设计的难点是什么?2020/7/1128全国人口查询系统海量信息的问题如果系统只包含13万人口的信息,那么系统的设计将会比较简单;假设数据库将全国13亿人口的信息都将存入系统,那么这个数据库的容量将达到多少?量变引起了质变系统的响应速度问题:•要在很短的时间内响应每个事务系统的吞吐量问题•要在单位时间内处理大量事务2020/7/1129全国人口查询系统采用什么样的硬件结构?因为同时访问这个系统的并发用户非常多,为了保证用户查询的响应时间,系统必须支持并行计算。因此可以采用支持并行计算的大型计算机:•IBM的大型机•机群系统同时还要考虑系统总线的吞吐量和磁盘阵列I/O的吞吐量。2020/7/1130全国人口查询系统选用什么样的DBMS?有没有商用的DBMS可以管理这样容量达几百T的数据?•ORACLE号称可以管理1024TB的数据库,但是实际应用的一个最大数据库只有5-15TB;•SQLSERVER号称可以管理1048516TB的数据库,但目前最大的数据库是JimGray……解决办法需要将这些数据放到几十个数据库管理系统中去,而不是一个DBMS下的几十个数据库;必须选择那些支持数据分布和并行计算,并具有良好数据划分功能的数据库管理系统。2020/7/1131全国人口查询系统数据分布与划分全国31个省市自然而然就构成了数据的一种分布方式:31个DBMSs;而在一个省内的数据库系统中,数据可以按照性别和年龄等属性进行划分,将数据放在不同的磁盘上。查询系统可以充分利用数据的分布与划分来满足性能上的要求!男女性别年龄16∼3536∼5556以上例如“查找一个名叫冯建华的男性青年”索引?数据集中存放2020/7/1132全国人口查询系统应用逻辑的处理如何在31个独立的数据库系统之上给程序员提供更好的应用编程环境呢?•程序员自己编写应用逻辑控制程序;•利用数据仓库管理系统;•利用联邦数据库管理系统。查找一个名叫冯建华的男性青年数据集中存放FDBMS或DWMS2020/7/1133全国人口查询系统海量存储系统SAN--存储区域网络:•SAN将数据集中起来存放,并且将存储介质与数据库服务器物理上隔离开来。其扩展性非常好!StorageAreaNetwork磁盘阵列磁带库光交换机DBMS服务器网络客户端?2020/7/1134小结:设计内容与