`
Callan
  • 浏览: 736627 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库中的水平分割和垂直分割

阅读更多

1。水平分割:按记录进分分割,不同的记录可以分开保存,每个子表的列数相同。

水平分割通常在下面的情况下使用:

A 表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度。

B 表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。

C需要把数据存放到多个介质上。

 

例如法规表law就可以分成两个表active-law和 inactive-law。activea-authors表中的内容是正生效的法规,是经常使用的,而inactive-law表则使已经作废的法规,不常被查询。水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要union操作。在许多数据库应用中,这种复杂性会超过它带来的优点,因为只要索引关键字不大,则在索引用于查询时,表中增加两到三倍数据量,查询时也就增加读一个索引层的磁盘次数。

 

2。垂直分割:按列进行分割,即把一条记录分开多个地方保存,每个子表的行数相同。

把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O 次数。其缺点是需要管理冗余列,查询所有数据需要join操作。 

例如有表T1
id  name  qty
--------------
1  p1    10
2  p2    20
3  p3    30
4  p4    40
......
......

垂直分割就是按列进行分割,即把一条记录分开多个地方保存,每个子表的行数相同。
例如表T1,可以把id和name放到数据文件p1,把qty放到数据文件p2。

水平分割就是按记录进分分割,不同的记录可以分开保存,每个子表的列数相同。
像表T1,可以把id为单数的放到数据文件P1,双数的放到数据文件P2

表散列与水平分割相似,但没有水平分割那样的明显分割界限,
它由哈希函数和键值决定一条记录的保存文件,这样是为了IO更加均衡。

 

分享到:
评论
3 楼 oraclhr123 2010-04-21  
垂直划分可以从业务出发来分库或分表(拆分字段)
水平划分是根据规则来划分数据库表中的记录
2 楼 gaotianpu 2010-04-16  
垂直分割唯一一个问题想不清楚,
原来n台server,数据又增加到没法承受的水平,再增加了m台server?
靠hash分配,新老server如何调整?

不知道我是否说清楚了?
1 楼 tuyinbo 2010-02-02  
数据库中的水平分割和垂直分割说明的很详细,能不能说明下没有情况的使用场合?

相关推荐

    数据库表分割技术浅析(水平分割/垂直分割/库表散列)

    数据库表分割技术是应对大数据量和高并发场景的有效策略,主要分为水平分割、垂直分割和库表散列三种方式。 1. **水平分割** 水平分割是指按照记录的某一属性或条件,将一个大表的数据分散到多个表中,每个子表的...

    基于mybatis框架,数据库垂直、水平拆分及读写分离实现

    在数据库水平拆分中,通过一致性哈希策略,可以将数据均匀分布到各个节点,即使有新的节点加入或现有节点下线,受影响的数据范围也相对较小。在MyBatis中,可以自定义插件实现一致性哈希的计算,将数据映射到相应的...

    分布式数据库 第三章 分布式数据库的设计

    分布式数据库设计是指如何将分布式数据库系统中的数据进行逻辑划分和实际物理分配,以满足不同的业务需求和应用场景。在本章中,我们将讨论分布式数据库设计的基本概念、设计策略、分片定义、水平分片、垂直分片、分...

    垂直分割数据窗口垂直分割数据窗口

    但是,由于描述部分和标题部分出现了重复的情况,并且提供的代码片段与标题和描述所提及的主题并不完全吻合(标题和描述指向的是“垂直分割”,而代码示例则涉及到“水平滚动”),因此在接下来的内容中,我们将首先...

    如何从应用程序来优化Oracle数据库

    为了平衡这一矛盾,可以适当进行反规范化,如分割表(水平分割和垂直分割)、保留冗余列和增加派生列。 分割表分为水平分割和垂直分割。水平分割是根据行划分,每个子表查询速度快,但管理复杂;垂直分割是依据列的...

    设计高性能数据库[优化数据库结构]

    本文将详细介绍通过优化数据库结构来提高数据库性能的方法,包括分离用户数据库与系统数据库、创建数据库表分区(垂直分表和水平分表)以及合理部署数据库对象等策略。 #### 二、分离用户数据库与系统数据库 在...

    分布式数据库课后习题答案整理

    1. 全局概念模式:描述分布式数据库中全局数据的逻辑结构和数据特性。 2. 分片模式:描述全局数据的逻辑划分,每个全局关系可以通过选择和投影的关系操作被逻辑划分为若干片段。 3. 分配模式:根据选定的数据分布...

    东北大学申德荣分布式数据库系统原理与应用讲义

    设计分布式数据库时,需要考虑数据的划分策略,如水平分割(按记录分)和垂直分割(按字段分)。此外,还要考虑数据的复制策略,包括无复制、单主复制或多主复制,每种都有其优缺点。在设计过程中,还需要考虑事务...

    东北大学2009年春季博士入学试题-分布式数据库

    分配模式可以是水平分区、垂直分区或混合分区,选择合适的分配模式取决于具体的应用场景和性能要求。 查询优化 在分布式数据库中,查询优化是一个非常重要的问题。全局优化是指对整个分布式数据库系统的优化,而...

    数据库分库技巧

    其中,水平切分通过将数据按照某种规则分散到多个数据库实例中,能够有效减轻单个数据库的压力,并提高整体系统的可用性和容错性。本文将重点介绍水平切分中的关键技术——分库、分表、主从复制、集群及负载均衡等,...

    数据库原理、编程与性能

    数据库架构设计要考虑扩展性,如水平分割(Sharding)、垂直分割(Partitioning)和读写分离,以适应高并发和大数据量的需求。 最后,备份与恢复策略对于数据安全至关重要。定期备份可以防止数据丢失,而日志记录和...

    【整理】数据库面试题索引sql优化+数据库SQL优化总结之百万级数据库优化

    1. **数据库架构设计**:在百万级数据量下,合理的设计能避免性能瓶颈,如垂直分割、水平分割,以及读写分离策略。 2. **缓存与预热**:使用内存数据库如Redis或Memcached来缓存热点数据,减少对主数据库的压力;...

    数据库工程师知识点

    - 分区与分片:通过水平或垂直分割数据,提高处理能力。 - 数据库集群:如MySQL Cluster、MongoDB Replication,提升系统的可用性。 8. NoSQL与NewSQL: - NoSQL数据库:理解键值对、文档型、列族、图形数据库的...

    分布式数据库技术在电力企业中的应用 (1).pdf

    分布式数据库系统数据分片通常采用水平、垂直、导出和混合等多种方式,应根据用户需求和具体场景选择适合的数据分片策略。 在实际应用中,分布式数据库技术使得电力企业能够高效地进行资源分配和信息共享。例如,在...

    图书管理系统MySQL数据库

    随着图书数量和用户量的增长,数据库需要具备良好的扩展性,如垂直分割(将表拆分到多个服务器)和水平分割(将数据分布到多个表)。 11. **错误处理和日志记录**: 为了追踪和解决可能出现的问题,系统应记录...

    基于Oracle的数据库系统性能优化策略.pdf

    然而,过度规范化可能导致查询效率下降,因此在实际应用中,可能需要在某些情况下考虑反规范化,如分割表(水平分割和垂直分割)、保留冗余列以及增加派生列,以平衡存储空间和查询速度。 - 水平分割通过将大表...

Global site tag (gtag.js) - Google Analytics