数据库的垂直分割、水平分割和表列散之间的“纠葛”

简介:

1,有时对表做分割可以提高性能。表分割有两种方式:  
1水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。
水平分割通常在下面的情况下使用。
•表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度。
•表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
•需要把数据存放到多个介质上。
  水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要union操作。在许多数据库应用中,这种复杂性会超过它带来的优点,因为只要索引关键字不大,则在索引用于查询时,表中增加两到三倍数据量,查询时也就增加读一个索引层的磁盘次数。  
2垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。其缺点是需要管理冗余列,查询所有数据需要join操作。

 

垂直分割: 按列进行分割,即把一条记录分开多个地方保存,每个子表的行数相同。 
水平分割: 按记录进分分割,不同的记录可以分开保存,每个子表的列数相同。 
表散列: 与水平分割相似,但没有水平分割那样的明显分割界限,它由哈希函数和键值决定一条记录的保存文件,这样是为了IO更加均衡。 

以后大家在数据量比较大的情况下就可以试用这些方法来处理了

相关文章
|
5月前
|
SQL 数据库 微服务
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
微服务03,最简单的Demo,我们每个服务不能重复开发相同业务,微服务数据独立,不要访问其他微服务的数据库,微服务的特点之一是提供不能功能的数据库互相分割,微服务需要根据业务模块拆分,做到单一职责,
|
7月前
|
数据库 SQL 中间件
数据库优化时的分割操作
【5月更文挑战第19天】本文介绍了数据库性能优化时可采用的分区、分片、分库、分表策略。分片引入分布式事务、跨库JOIN、SQL性能下降和自增主键管理等挑战。应谨慎使用,避免过早优化。优先考虑数据优化、硬件升级、读写分离和数据垂直、水平拆分。
87 0
数据库优化时的分割操作
|
存储 SQL 分布式计算
用户/帖子/好友/订单中心如何进行数据库水平切分
用户/帖子/好友/订单中心如何进行数据库水平切分
|
存储 数据库
数据库中某一列中使用的是text存储,使用的是逗号分割,查询某一个数据在该列所有数据中的条数【真实场景】
数据库中某一列中使用的是text存储,使用的是逗号分割,查询某一个数据在该列所有数据中的条数【真实场景】
86 0
|
SQL 存储 缓存
数据库分割扩展
此篇作为《架构即未来》读书笔记吧,再额外补充一下主从模式、分库分表实施的知识点 书中提到AKF扩展立体结构
136 0
数据库分割扩展
|
存储 算法 数据库
分治策略(divide and conquer)-微服务与数据库水平拆分
分治策略 divide and conquer 微服务 数据库 水平拆分
273 0
分治策略(divide and conquer)-微服务与数据库水平拆分
|
存储 监控 数据库
【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )(二)
【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )(二)
199 0
|
前端开发 数据库 数据库管理
【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )(一)
【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )(一)
362 0
|
数据库 缓存
一分钟掌握数据库垂直拆分
(1)水平拆分和垂直拆分都是降低数据量大小,提升数据库性能的常见手段 (2)流量大,数据量大时,数据访问要有service层,并且service层不要通过join来获取主表和扩展表的属性 (3)垂直拆分的依据,尽量把长度较短,访问频率较高的属性放在主表里
639 0
|
数据库 索引 缓存
单KEY业务,数据库水平切分架构实践 | 架构师之路
本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践。
606 0