目录
一、反规范化——概念
常见的反规范化技术包括:
1、增加冗余列
增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。
例如:以规范化设计的理念,学生成绩表中不需要字段“姓名”,因为“姓名”字段可以通过学号查询到,但在反规范化设计中,会将“姓名”字段加入表中。这样查询一个学生的成
绩时,不需要与学生表进行连接操作,便可得到对应的“姓名”。
2、增加派生列
增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。
例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。
但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价”以提高查询效率。
3、重新组表
重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
4、分割表
有时对表做分割可以提高性能。表分割有两种方式。
(1)水平分割
根据一列或多列数据的值把数据行放到两个独立的表中。
水平分割通常在下面的情况下使用。
- 情况 1:表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询效率。
- 情况 2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
- 情况 3:需要把数据存放到多个介质上。
(2)垂直分割
把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据需要连接操作。
二、事务管理——概念
数据库系统运行的基本工作单位是事务,事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。
事务通常以 BEGIN TRANSACTION(事务开始)语句开始,以COMMIT 或 ROLLBACK 语句结束。
- COMMIT 称为“事务提交语句”,表示事务执行成功的结束。
- ROLLBACK 称为“事务回退语句”,表示事务执行不成功的结束。
从终端用户来看,事务是一个原子,是不可分割的操作序列。事务中包括的所有操作要么都做,要么都不做(就效果而言)。事务不应该丢失或被分割地完成。
三、并发控制——概念
处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X 封锁)和共享型封锁(S 封锁),分别介绍如下:
1、排他型封锁(简称 X 封锁)
如果事务 T 对数据 A(可以是数据项、记录、数据集,乃至整个数据库)实现了 X 封锁,那么只允许事务 T 读取和 修改数据 A,其他事务要等事务 T 解除 X 封锁以后,才能对数据 A 实现任何类型的封锁。可见 X 封锁只允许一个事务独锁某个数据,具有排他性。
2、共享型封锁(简称 S 封锁)
X 封锁只允许一个事务独锁和使用数据,要求太严。需要适当放宽,例如可以允许并发读,但不允许修改,这就产生了S 封锁概念。
S 封锁的含义是:如果事务 T 对数据 A 实现了 S 封锁,那么允许事务 T 读取数据 A,但不能修改数据 A,在所有 S 封锁解除之前绝不允许任何事务对数据 A 实现 X 封锁。
典型真题
若事务T1对数据D1加了共享锁,事务T2、T3分别对数据D2、D3加了排它锁,则事务T1 对数据( );事务T2对数据( )。
- A.D2、D3加排它锁都成功
- B.D2、D3加共享锁都成功
- C.D2加共享锁成功,D3加排它锁失败
- D.D2、D3加排它锁和共享锁都失败
——————————————————————————————————
- A.D1、D3加共享锁都失败
- B.D1、D3加共享锁都成功
- C.D1加共享锁成功,D3如排它锁失败
- D.D1加排它锁成功,D3加共享锁失败
试题分析:
共享锁(S锁):又称读锁,若事物T对数据对象A加上S锁,其他事物只能再对A加S锁,而不能加X锁,而不能加X锁,直到T释放A上的S锁
排他锁(X锁):又称写锁。若事物T对数据对象A加上X锁,其他事物不能再对A加任何锁,直到T释放A上的锁。
参考答案: D 、C
四、分布式数据库——概念
1、分布式数据库系统特点
(1)数据的分布性
分布式数据库中的数据分布于网络中的各个结点,它既不同于传统的集中式数据库,也不同于通过计算机网络共享的集中式数据库系统。
(2)统一性
主要表现在数据在逻辑上的统一性和数据在管理上的统一性两个方面。
分布式数据库系统通过网络技术把局部的、分散的数据库构成一个在逻辑上单一的数据库,从而呈现在用户面前的就如同是一个统一的、集中式的数据库。这就是数据在逻辑上的统一性,因此,它不同于由网络互联的多个独立数据库。分布式数据库是由分布式数据库管理系统统一管理和维护的,这种管理上的统一性又使它不同于一般的分布式文件系统。
(3)透明性
用户在使用分布式数据库时,与使用集中式数据库一样,无须知道其所关心的数据存放在哪里,存储了几次。用户需要关心的仅仅是整个数据库的逻辑结构。
分布透明性包括:分片透明性、位置透明性和局部数据模型透明性。
(1)分片透明性是分布透明性的最高层次
所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
(2)位置透明性是分布透明性的下一层次
所谓位置透明性是指,用户或应用程序应当了解分片情况,但不必了解片段的存储场地。
(3)局部数据模型(逻辑透明&#