数据库原理与应用 第 14 章 · 第二节
课程 › 第 14 章 › 第二节 存储结构与聚簇索引存取方法存放与评价 版式
第 14 章 数据库物理结构设计、实施和运行维护 · 第二节

确定和评价物理结构

存储记录结构与聚簇、索引、存取方法、存放位置和系统配置,以及怎样评价
本 节 知 识 点
  1. 04存储记录结构与聚簇
  2. 05在哪些列上建立索引
  3. 06存取方法与存取路径
  4. 07存放位置、系统配置与评价
04
第 14 章 · 第二节 · 课件第 7、8 页合并重做

存储记录结构与聚簇

定类型和长度时权衡时间、空间和维护代价。

14.1 数据库物理结构设计课件第 7、8 页合并

存储记录结构与聚簇

存储记录结构包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射。
要权衡的三个因素
因素含义
存取时间查询和修改的速度
存储空间占用多少磁盘空间
维护代价修改数据时要做的额外工作

三者互相制约,要根据实际情况综合权衡。

聚簇
  • 为了提高查询速度,把在一个或一组属性上具有相同值的元组,集中存放在一个物理块中
  • 这个或这组属性称为聚簇码
  • 作用:节省存储空间,按聚簇码查询的效率大大提高
  • MySQL 的 InnoDB 按主码聚簇存放表中的行,主码的索引就是聚簇索引
  • 一张表只能按一种方式聚簇,按其他列查询得不到聚簇的好处

试一试这一列该用什么类型

点一行,看这一列该用什么类型
这一列存的是类型

关键术语

聚簇cluster
把聚簇码相同的元组集中存放在一个物理块中

实 验

实验 1-1 建立供应商表

实 验

实验 1-6 按主码聚簇

05
第 14 章 · 第二节 · 课件第 9 页重做

在哪些列上建立索引

查询多的列建索引,修改多、取值少的列不建。

14.1 数据库物理结构设计课件第 9 页重做

在哪些列上建立索引

主码上的索引
  • 在主码上建立唯一索引,既能提高查询速度,又能避免主码重复
  • 定义主码时,MySQL 已经自动建立了这个唯一索引,不需要再建
其他列
情况做法
某些非主属性的检索很频繁在这些属性上建索引
查询多,对查询性能要求高多建一些索引
修改多,对修改效率要求高少建一些索引
  • 索引加快了查询,但要占用存储空间,修改数据时还要同时维护索引,所以要综合考虑
  • 取值很少的列(例如性别)建了索引,按一个值查出的行仍然很多,一般不建

试一试这一列该不该建索引

订单表的几列,点一行看该不该建索引
列和它的用法建索引

实 验

实验 1-3 主码上已有索引

实 验

实验 1-4 为查询条件建索引

实 验

实验 1-5 唯一索引

06
第 14 章 · 第二节 · 课件第 10、11 页合并重做

存取方法与存取路径

主存取路径按主码,辅存取路径靠其他列上的索引。

14.1 数据库物理结构设计课件第 10、11 页合并

存取方法与存取路径

存取方法是为存储在物理设备上的数据提供存储和检索能力的方法,由存储结构和检索机构两部分组成。
两个组成部分
部分作用
存储结构限定可能存取的路径和存储记录
检索机构定义每个应用的存取路径,不涉及存储结构和设备分配
两种存取路径
路径说明
主存取路径与初始记录的装入有关,通常用主码检索
辅存取路径通过辅助码的索引,改变存取数据的入口点
  • 在 MySQL 中,按主码查找走主存取路径,在其他列上建的索引就是辅存取路径
  • 辅存取路径缩短了存取时间,但增加了存储空间和索引维护的开销,要根据具体情况权衡

练一练

在供应商表的 supname 上建了索引,按名称查询走的是哪种存取路径?
  1. A主存取路径
  2. B辅存取路径
  3. C聚簇
答案 B

supname 不是主码,它上面的索引是辅助索引,按它查询走的是辅存取路径。

07
第 14 章 · 第二节 · 课件第 12、13 页合并重做

存放位置、系统配置与评价

分开存放读写频繁的部分,配置参数运行后再调。

14.1 数据库物理结构设计课件第 12、13 页合并

存放位置、系统配置与评价

确定存放位置
  • 易变部分与稳定部分、经常存取的部分与存取频率低的部分分开存放
  • 表和索引可以放在不同的磁盘上
  • 多用户环境下,日志文件与表、索引放在不同的磁盘上
  • 同时进行的读写分散到不同的设备上,存取就更快
确定系统配置
  • DBMS 提供系统配置变量和存储分配参数,例如同时连接的用户数、缓冲区的大小
  • 设计时只是初步设定,系统运行时还要根据实际情况调整
评价物理结构
  • 评价方法依赖于具体的 DBMS,主要考虑操作开销:查询和响应时间、更新事务的开销、生成报告的开销、主存储空间和辅助存储空间的开销
  • 比较几种方案,选出较优的一种。不满足要求时,回头修改设计

分清楚

要评价的开销什么时候变大
查询和响应时间索引少、数据多
更新事务索引多
存储空间索引多、字段宽

重 点

几项开销互相制约,多建索引查询快了,修改和空间的开销就大了。

保山学院·人工智能教研室·曹鼎鼎