程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

数据库的常见的反规范化技术

balukai 2025-01-06 11:11:15 文章精选 7 ℃

一、反规范化技术

规范化设计后,数据库设计者希望牺牲部分规范化来提高性能,这种从规范化设计的回退方法称为反规范化技术

采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。

可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。

规范化技术在数据库中的应用十分常见。当数据库对数据模型进行规范化处理后,会发现这些经过规范化处理的模型在进行查询操作时效果并不理想。因为经过规范化处理的数据模型形成了一系列的小表,每个表的数据量较小,进行查询操作时往往需要应用程序对这些表进行动态的连接操作,这就要在不同的表中进行多次I/O 操作。表的连接操作对于较少的,小容量表也许不会产生较大的影响,但是对于数据量十分庞大的数据库,这种多表连接操作在时间上是很难让用户接受的。此时,提高效率的最好方法就是使这些小表合并在一起,这就是数据的反规范化处理。

二、常见的反规范化技术

(1)增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。

(2)增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。

(3)重新组表:如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

(4)水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。

(5)垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少 I/O 次数。

最近发表
标签列表