数据库设计第13章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
样例事务分析模式
8
样例事务分析模式
9
步骤4.2选择文件组织方式
目标:确定每个基本表的有效文件组织方式。 文件组织方式包括:堆、哈希、索引顺序访问方法 (ISAM)、B +树和集群 某些DBMS(特别是基于PC的数据库管理系统)有 固定的文件的组织方式,无法改变 (附录D中给出了选择文件组织方式)
包含如下几步:
步骤4.1 分析事务 步骤4.2 选择文件组织方式 步骤4.3 选择索引
2
步骤4.1 分析事务
目标:理解运行在数据库上的事务的功能并分析重要事务。 分析事务时,要标识出性能标准,例如: 经常运行的事务和对性能产生重大影响的事务。 业务操作的关键事务。 当对数据库有很高要求时,每日/每周内访问数据库 的次数(最大负荷)。 用这些信息来标识可能会引起性能问题的数据库部分。 同时,需要标识事务的高层功能。例如: 更新事务中更新的列; 查询中检索的列。 用这些信息来选择正确的文件组织方式和索引。
3
在许多情况下,分析所有预期的事务是极为费时的,因 此至少应该研究最重要的那些事务,可采用80/20规则。 为了帮助标识要研究的那些事务,可以使用: 事务/表交叉引用矩阵,显示了每个事务访问的表; 事务应用图(Transaction Usage Map),它用图形 的方式表明了哪些表潜在地可能被多次使用。 将目光主要集中在有问题的地方,处理方法是: (1) 将所有的事务路径映射到表中; (2) 确定哪些表最常被事务访问; (3) 分析选出包含了这些事务的表。
13
步骤4.3选择索引– 选择二级索引原则 (1)不必为小表创建索引; (2)如果没有文件组织方式的键,则索引表的主键; (3)为检索数据时大量使用的列增加二级索引; (4)如果经常基于外键访问数据,则为该外键增加二级 索引; (5) 为经常有如下情况的列增加二级索引: 查询或连接条件; ORDER BY; GROUP BY; 其他操作 (例如UNION 或DISTINCT)
第13章 物理数据设计 – 步骤4 (选择文件组织方式和索引) 本章主题
如何分析用户事务来确定可能影响性能的特性。 基于对事务的分析,如何选择合适的文件组织方式。 何时选择索引来改善系统性能。 附录D有关于文件组织方式和索引的详细介绍。
1
步骤4 选择文件组织方式和索引 目标:确定最佳文件组织方式来存储基本表以及实现 所要求性能的索引。
15
11
如果选择排序的列是表的键,那么该索引就 是主索引;如果排序的列不是键,那么该索 引就是聚簇索引。 每个文件只能有一个主索引或者一个聚簇索 引,而不能两者兼有。如,SQL语言中 CREATE UNIQUE catalogno_unindex ON video(catalogno) CREATE CLUSTER catalogno_cluindex ON videoforrent(catalogno) DROP INDEX catalogno_cluindex
10
步骤4.3 选择索引
目标:确定添加索引是否能改善系统性能。 选择正确文件组织方式: 一种方法是保持记录的无序性并且创建所需 数目的二级索引; 另一种方法是通过指定主键或聚簇索引使表 中记录为有序。 这种情况下,应该选择如下列来排序或聚簇 索引记录:
经常用于连接操Hale Waihona Puke Baidu的列,因为这样使连接更有 效率; 在表中经常按某列的顺序访问记录的列。
4
交叉引用的事务和表(事务列表见P89的6.4.4节)
5
示例事务的事务使用映射图
6
步骤 4.1事务分析– 数据应用分析
对于每个事务,应该确定:
(a) 该事务访问的表和列以及访问的类型,及查询、插入、 删除、修改等; (b) 在查询条件中使用的列(Where引导); (c) 对于查询,包含在两个或更多的表的连接中的列; (d) 事务运行的预测周期,如某事务每天运行50次; (e) 事务的性能目标,如事务必须在1秒内完成。
14
(6)为查询中聚合函数包含的列增加二级索引; (7)为可以导致仅索引计划的列添加二级索引(仅索 引计划:只使用索引中的数据,不需要访问数据文 件就可完成查询); (8)避免为经常被更新的列或表设置索引; (9)如果查询将检索表中记录的大部分(>25%),即 使表很大,也不创建索引(遵循80/20原则); (10)避免为由长字符串组成的列创建索引。
12
二级索引提供了为基本表指定其他键的机制,可以 用 于 更 有 效 地 检 索 数 据 。 如 在 Member 表 的 memberNo上建立主索引,在lName建立二级索引。 在保持和使用二级索引时还要考虑到当检索数据时, 必须要平衡改善性能. 考虑如下: 每当在表中插入一条记录时,都要给每个二级 索引增加一个索引记录; 当表中相应记录被更新时,也要更新二级索引; 需要使用额外的磁盘空间来存储二级索引; 在查询优化期间,性能可能退化,因为查询优 化器可能考虑所有的二级索引。